2018/01/21

本好きの下克上を読むのに、テキストファイルを連結する

Honzk1


パドラッパさんに教えてもらった本好きの下克上を読みました。


テキストファイルでダウンロードできます。ただ、ファイルを部分ごとにダウンロードする必要があります。本編は677部分に分かれるので、面倒です。
ファブレットでWebで読んだりしましたけれど、テキストほど扱いやすくないので、どうも困ります。

最初、縦書きPDFなら一括でダウンロードできるので、PDFからコピペでテキストにして読んでいました。ところが、これだとページ番号やよみがなが途中に入ってしまってうまくありません。
面倒だけれど、とにかくテキストファイルですべての部分ファイルを手動でダウンロードしました。

複数のファイルを連結するのはcatしました。ところが、ファイル末尾に改行がないことがほとんどで、catで連結するとファイル先頭の題が前回の末尾にくっついてしまって読みにくいです。

とりあえずPerlで、


open(OUT, ">>alltxt.out");
while($line = <>) {
print OUT $line;
}
print OUT "\n----------\n";
close(OUT);

のようにして、
perl inscrlf.pl %1
というバッチファイルを、
for %%F in (*.txt) DO ins.bat %%F
のように呼び出してみます。これでとりあえずできそうですけれど、他にも問題がありました。ファイル名に部分ごとの連番が付くのですけれど、桁数が異なるとソート順が変わってしまい、順番が狂うのです。

部分ごとにダウンロードしたファイルは、
N4830BU-1.txt
とか、
N4830BU-10.txt
とか、
N4830BU-677.txt
のようになっているのです。

もう一つ、最近Windowsの設定をするときに、常用のPCにはActivePerlをそもそもインストールしていませんでした。Windows 10 でbashが使えるようになり、今ではアプリでUbuntuが入れられるので、そちらで十分になってきたのです。

そういうわけで、Windows 10のUbuntu上で作業することにして、Perlもバッチもやめてしまいます。

Pythonで書くか、shスクリプトで書くか。と思ってググったら、mvでなくrenameというのが便利そうです。これでいこう。

#!/bin/sh
rename 's/-(\d).txt/-0$1.txt/' *.txt
rename 's/-(\d\d).txt/-0$1.txt/' *.txt
echo '----------------------------------------\r\n' >alltxt.out
for file in `\find . -name '*.txt'`; do
    cat $file >> alltxt.out
    echo '\r\n----------------------------------------\r\n' >>alltxt.out
done

「inscrlf.sh」をダウンロード

ワンライナーでなく、SSでも再利用しそうだったので、shスクリプトをinscrlf.shのように改行コードLFでファイルに保存します。

これで、ダウンロードしたテキストファイルをひとつのフォルダに入れておき、Windows 10のUbuntuで、
./inscrlf.sh
とすることで、ひとつに連結したテキストファイルを得られるようになりました。

最近のWindowsがbashを使えたり、アプリでUbuntuを入れられたりするのは、かつての状況からすると本当に良くなりました。個人的に心証が良く、とても好意的にとらえています。


Honzk

| | コメント (1) | トラックバック (0)

2017/10/22

マザー固定ピン折れのHP200LX修繕

使っていてカーソルキーなどが効かなくなる症状が出て、HP200LXを分解したら、筐体を合わせるピンが折れて、反対側に残っています。マザーボードが固定できず、キーボードフレキ接触がうまくいかなくなっています。

Img_20171022_083130819

ピンバイスで穴をあけて、代わりの棒を刺そうと思いましたけれど、不器用なためすこし中心からずれて穴があき、横を破ってしまいました。しっぱい。

矢澤さんのサイトに見に行きます。M1.4mmのセルフタップねじで固定しているようです。なるほどー。
200LX故障例,キーコネクタの接続不良をネジ留めにする。[LX-Restore Station]

M1.4の木ネジの入手手段がリンク切れてわかりません。結局、amazonで検索し、類似の木ネジを見つけます。


DealMux M1.4 x 5mmのプラスフラットヘッドセルフタッピングねじファスナー100個

amazonの販売でなくマーケットプレースです。評価140かあ、大丈夫かなあ。安いもんだしと注文します。
発送までは早いものの、中国から郵便です。これは大丈夫かなあ。このパターンはこないこともあります。でも、発送から二週間、無事ポストに投函されていました。

Img_20171022_083227596


M1.4mmの極小セルフタッピングねじです。長さは5mmです。


すでにピンバイスで下穴は開いていますので、さくっと入ってねじ止めできました。組み立てて電池を入れると、良好にキー入力できます。よかったー。

Img_20171022_083602506


最近は日記はDM200のLinux上でvimで書くことが一番多いですけれど、DM200を持ち歩く気にはなれません。
HP200LXではメモ取りでまだ現役です。


| | コメント (0) | トラックバック (0)

2017/09/17

Windows上でテキスト文頭にタイムスタンプを自動挿入するスクリプトを使ってすばやいメモとり

Windows環境での、テキストメモをとるときの設定についてです。

ぼくは以前、メモは紙(手帳)を使っていました。今は、データ再利用と数年前の過去記録参照のため、テキストファイルにしています。
ここでは、テキストファイルでメモを取るというのは前提条件として、議論の対象にはしません。
ついでに、アプリ(OneNoteとか紙copiとかKeepとかEvernoteとか)への依存を避けることも前提条件で、議論の対象にはしません。

テキストファイルに文字によるメモをとる、そのためにWindowsでアプリに依存しない汎用的で、とにかくメモを取り始めるまで素早い手順のための設定についてのお話です。

20年前とは異なり、業務上貸与されたPCでは、紙copiをインストールすることも自由とは限りませんし、EvernoteやDropboxのアクセスも制限されているかもしれません。
ぼくはHP200LXを使ってメモをとっていますけれど、これは一般的な環境ではありません。Windows 7やWindows 10の環境はある程度一般的だと思います。

なので、Windows 7/Windows 10で、テキストメモを取るときのなるべく環境に依存せず、かつ手早くメモをとれるごく簡単な環境設定をここでは説明します。

メモ帳の一行目に「.LOG」と入れておくというのが一番近いです。でも、あのタイムスタンプの書式にぼくは耐えられません。
なんで時間が前で日付が後ろなの?普通にそのままソートしないの?改行入れてしまうけど、grepしないの?と思ってしまいます。これは好みではありますので、メモ帳の一行目に.LOGと入れておけばタイムスタンプ付きのメモがとれて、それでかまわない方はWindows標準アクセサリのメモ帳で、一行目に.LOGと入れてお使いください。

じゃあ、どうしているの?という話です。

まず、ぼくが好んでとっているテキストファイルのメモの形式です。

2017/09/16 19:46:39 こんな風に次の行にして、続きを書きます。このため、複数行にわたって図を描くような用途は想定していません。
2017/09/16 19:45:41 複数行ではなく一行の中にメモを書きます。長いときは途中でタイムスタンプ付きで新規行にします。
2017/09/16 19:45:11 新しい内容は上に、古い内容は下になります。逆がよければソートすればよいです。
2017/09/16 19:44:57 こういう内容のメモです。

こんな感じです。

書式としては、


YYYY/MM/DD HH:MM:SS メモ内容

という行を1レコードとしたデータです。
これをこのまま書式整形して印刷するような用途は考えず、必要であれば変形した先で利用します。メモ内容文頭に記号などを入れて分類してもいいのでしょうけれど、それすらほとんどしていません。生データを入れるテキストファイルによるデータベースなので、大事なのは手早く生データを作ることだととらえています。会話をとらえ、蒸発する前にすばやく歪めずにテキストにメモすることが肝要だと思っています。

なので、一瞬でテキスト入力できる状態になっていて、タイムスタンプも自動で入ってくれるのが理想です。もともとHP200LXで構築したやり方ですけれど、Windows 7やWindows 10でも同様にやりたいと思ったわけです。

一瞬でメモのテキストファイルが起動して、一瞬でタイムスタンプが入ってすぐメモを取り始める状態になっているべきだ、それが当たり前だ、と思っています。
タイムスタンプのために、きょう[変換][スペース]いま[変換]とか、ボタンをマウスクリックするとかはありえない、と思っています。そういう意味では、メモ帳の.LOG機能は割と理想に近いものではあるのです。

20170917


ここでは、Windows標準の機能で、

ショートカットキーをメモ用テキストファイルに設定する
タイムスタンプ挿入とカーソル移動のためのスクリプトを作成し、ショートカットキーを設定する

という手順を説明します。スクリプトはWindows標準のWSHであるVBScriptで記述します。


まず、メモ用テキストファイルです。
ポケットひとつの原則に従い、メモ用テキストファイルは1ファイルにするのが楽だと思っています。

ぼくの場合は、個人用のファイル、仕事用のファイルの2種類がありますけれど、使うPCは個人用なら個人用のファイルひとつですし、仕事用PCでは仕事用ファイルひとつですので、ポケットひとつの原則通りです。

年が変わるとファイルを変えます。正確には、月単位で月単位のバックアップファイルを作り、古い行は削除していきます。年が変わると年をファイル名に入れたファイルに分けてしまいます。年に一つのファイルするのは、ほぼ日手帳が年単位に本棚に並んでいるように、テキストファイルで年単位でフォルダ(ディレクトリ)に並んでいる状態にしておいて、grepで検索をかけたり、年が分かっていたらエディタやビューアでファイルを開いて検索をかけるからです。

MEMO.TXT
MEMO2017.zip
MEMO2016.TXT
MEMO2016.zip
MEMO2015.TXT
MEMO2015.zip

といった感じです。MEMO.TXTを常に編集するファイルにしています。これは別途毎日バックアップをとっています。


なので、MEMO.TXTを起動するショートカットキーを設定します。

ショートカットキーの設定は、
テキストファイル(MEMO.TXT)のショートカットファイル(MEMO.TXT - ショートカット.lnk)を作成する。
ショートカットファイルをデスクトップかスタートメニューにコピーする。
コピー先のショートカットファイルのプロパティを開いてショートカットキーを指定する。
という手順です。

20170916_2
テキストファイルで右クリックして、ショートカットの作成を選びます。デスクトップに置いていいなら送るでデスクトップを選んだら一操作ですみます。

20170916_9

ここでは、CTRL+ALT+Mというショートカットキーを設定しています。
デスクトップは整理しておきたいので、ぼくはスタートメニューフォルダにコピーしています。
たとえば、
C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\Start Menu
にコピーするということです。エクスプローラーで表示タブの隠しファイルにチェックを入れれば、このフォルダも表示して貼り付けることができます。

20170916_3


20170916_4


20170916_5


つぎに、タイムスタンプ挿入のスクリプトです。
スクリプトの内容は単純で、1行目に行挿入してタイムスタンプを入れ、半角スペースを入れてその1行目末にカーソルを位置してすぐメモをとれる状態にするだけです。

VBScriptは単なるテキストファイルです。メモ帳でも以下のスクリプトを貼り付けて保存し、ファイル名の拡張子を.vbsにします。たとえば、
datetime.vbs
という感じです。


Option Explicit
' 編集中テキストの文頭にタイムスタンプを挿入する。
Dim strNow, objWshShell
strNow = "" & now() & " "
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.run "cmd /c echo " + strNow + "| clip", 6, 1
WScript.Sleep 30
objWshShell.SendKeys("^{HOME}^v{LEFT}")

このファイルをどこか好きなところに保存しておき、これにショートカットキーを設定します。

「datetime.vbs」をダウンロード

書式は、Windows設定に従っています。
標準では、yyyy/MM/dd HH:mm:ss です。

20170916_21


ショートカットキーの設定は、
VBScriptファイル(datetime.vbs)のショートカットファイル(datetime.vbs - ショートカット.lnk)を作成する。
ショートカットファイルをデスクトップかスタートメニューにコピーする。
コピー先のショートカットファイルのプロパティを開いてショートカットキーを指定する。
という手順です。

先ほどと同様ですね。

20170916_15


ここでは、CTRL+ALT+Dというショートカットキーを設定しています。

ここまでで設定は終わりです。

設定したWindows PCで、

CTRL+ALT+M
を押すと、テキストファイルを標準のテキストエディタで開かれます。
テキストエディタを何もいれていなければ、メモ帳で開かれるかと思います。

CTRL+ALT+D
を押すと、日付時間のタイムスタンプが自動挿入され、メモを打てる状態になります。
新規行でメモをさらに書く時も、
CTRL+ALT+D
を押します。


保存は、お使いのテキストエディタの上書き保存のショートカットキーを押してください。
ぼくの場合はCTRL+Sで上書き保存のエディタを使っています。

20170916_22

こんな感じで、アプリに依存せず、Windows 7/Windows 10の標準の機能だけで設定できる方法を使い、メモをとる準備ができます。
残念ながら、Windows 10 Sというセキュリティを追求しストアアプリしか動かないエディションが出ているようですので、おそらくこのスクリプトは使えないだろうと思います。

好みのテキストエディタをインストールできるなら、そのテキストエディタのマクロなりでやればいい話です。
ぼくもたとえば秀丸では秀丸のマクロで似たような機能のマクロを登録して使っています。

VBScriptで助かるのは、すべてのアプリで利用できるようになることです。たとえばGoogle Keepにタイムスタンプを入れたいときにWindowsでMS IMEでどうすりゃいいの、などと考えなくてもすみます。

| | コメント (3) | トラックバック (0)

2017/09/10

MyricaフォントのFontX形式、DOS/C用フォントさらに追加

Vzで使うとして、もう少し縦のドット数の違うものも試してみます。

縦18ドット
Vz18


縦20ドット

Vz20


縦22ドット
Vz22

縦24ドット

Vz24

今回追加分も含め、FontX形式に変換したファイルです。
元のフォントファイル一式もアーカイブに入れてあります。


なお、シスマネ(MFONT)用とDOS/C用は、縦のドット数がかぶるとLXFONTではうまく組み込めないので、
排他利用となります。LXFONT.INIも別にしています。


MyricaM_fontx2_20170910.zip

| | コメント (0) | トラックバック (0)

2017/09/07

MyricaフォントのFontX形式、全角幅16ドットのDOS/C用フォント追加

※アーカイブ誤りにつき、差し替えました。(2017/9/9)

Myricaフォントによる、HP100/200LXで24ドットフォントのテキスト表示・編集環境設定はシスマネで横24ドットフォントをmfont経由で利用する前提でした。

すっかりVZユーザーというか、DOS/C上での利用のことを忘れていました。
Vz、Mifes mini、SS Editor、Jedなどのテキストエディタが手になじんでいる場合、DOS/Cで
利用するわけですけれど、LXDSPDの仕様で、フォントの横幅は半角8ドット(全角16ドット)に
制限されます。

縦については自由なので、縦24ドットと縦18ドットのフォントファイルも作って追加しました。


まず、縦横とも16ドットでDOS/C上のVzでの表示です。
Scrn0009


LXDSPD.INIに記述を追加します。例えば、
[init]
-e:zoom -v70 -jp -av

[extend]
low=8,8,8,8,16,8
mid=8,12,8,11,16,11
mid12=8,16,6,12,12,12
14=8,15,8,14,14,14
k14=8,16,7,14,14,14
zoom=8,17,8,16,16,16
h18=8,18,8,18,16,18
h24=8,25,8,24,16,24

のような感じです。

LXVMコマンドで切り替えます。
Scrn0010

横16ドット、縦18ドットの表示です。

Scrn0011


横16ドット、縦24ドットの表示です。


Scrn0013

今回追加分も含め、FontX形式に変換したファイルです。
元のフォントファイル一式もアーカイブに入れてあります。
MyricaM_fontx2_20170905.zip


LXFONT.INIの誤り、フォントのアーカイブ漏れに気付いたため、差し替えです。(2017/9/9)

MyricaM_fontx2_20170909.zip

なお、LXFONT.INIは、シスマネ上のMFONT用と、DOS/C用で、それぞれLXFONT_M.INIとLXFONT_C.INIにファイルを別にしています。


→更新しています。(2017/9/10)
MyricaフォントのFontX形式、DOS/C用フォントさらに追加

| | コメント (0) | トラックバック (0)

«Myricaフォントによる、HP100/200LXで24ドットフォントのテキスト表示・編集環境設定