2020年10月26日月曜日

2.5” HDDの寿命

下の写真は言うまでもなく、三つとも2.5”のハード ディスク ドライブ (HDD)です。それも、今では珍しくなったParallel ATAです。
現在はソリッド ステート ドライブ (SSD) が主流ですが、このHDDが使われた頃は「自称専門家」が2.5” HDDの寿命は普通に扱えば3年で、長くても5年だと言い切っていました。 

 左から2004年4月製造、2003年12月製造、2004年2月製造です。15年以上使っていますが、どれも「問題なく」現在も動作しています。まぁ、さすがにOSの現状からすれば、容量が少ないので月に数回しか使いませんが(笑) 

 左の Hitachi Travelsar は40GBで一番左が5400RPM、中央が7200RPMです。右はFujitsu でAppleマークで分かるようにAppleのノートPCに入っていた80GBの4200RPMです。全てタイ王国で作られた製品です。 

 「自称専門家」がノートPCを使っているのを何人か見たことがあります。彼らはノートPCが動作中に、つまりHDDが動作中にノートPCを手に取ったり、テーブルに置いたりしました。これはラップトップPCだと命名して膝の上に置く強者もいました。そんな彼らは2.5”HDDは「衝撃対策されている」と主張して大丈夫だ、とHDDメーカのマーケティング担当者の意見を言っていました。 

 ここで「衝撃対策」に関してくどくど書いて、知ったかぶりするつもりはありません。しかし、どのように衝撃対策をしてもHDDの物理的な性能が変わるわけではありません。手荒く扱えばそれだけ故障するまでの時間は短くなります。数回か、運が良ければ十回以上の衝撃で動作不良に陥ることもあれば、一回の衝撃で動作不良になることもあります。

 しかし、正しく(神経質に?)扱えばこの写真のように15年以上経っても使えます。もちろん「そんなに気をつけていてはノートPCなんぞ使えるか」と豪言する人もいますし、否定もしません。しかし、本来の性能を超える無茶な使い方をしていることは認識して、正しく公言してもらいたいものです。 

 ただ、わたしは仕事の関係で壊れたHDDを普通の技術者よりもたくさん見ていますし、昔はメーカの技術屋として毎月出される不良報告を見ていましたし、会社の同僚に元ハード ディスク メーカの技術者もいて裏話も聞いていますので、不良に対する感覚が少々異なることは確かです (笑)

2020年10月24日土曜日

BBEditとMarkdown

TidBITSの受け売りですが、BBEdit version 13.5 に Markdown用の便利なおまけが付きました。

私はそれほど頻繁にMarkdownを書かないので、構文を覚えていません。BBEdit のメニューで [Window > Palettes > Markdown Cheat Sheet] を選択すると、カンニング ペーパーが出てきます(笑) 

このカンニング ペーバーは単にカンニングするだけでなく、項目をダブルクリックすると構文のテンプレートを入力できます。 

ただし、このCheat SheetはMarkdownの基本的な構文だけで、表や定義文などは含まれていません。内容を見ると、どこかに定義文があって追加できそうに思えるのですが、どうも見当たりません。残念?(笑)

2019年1月5日土曜日

markdown とサービス メニュー

HTML の文章を修正するときに表やリストなどを HTML で書くのは面倒なものです。このようなときに、修正箇所を軽量マークアップ言語の Markdown で簡単に書いて、後から HTML に変換できる簡単なプログラムがあります。

Markdownの拡張版 MultiMarkdown では、 [Service] (サービス) から以下の二つの命令が利用できます。

md - Convert - MultiMarkdown to HTML.workflow
md - Convert - HTML to Markdown.workflow

brettterpstra.comからも配布されています。

macOSが持つ機能の一つである [Service] (サービス)は、自分で書いた簡単な処理プログラムを AppleのPages.app や BBEdit.app などさまざまなアプリケーションから利用できます。さらにショート カット キーを割り当てることもできるので、このような目的には便利です。実際、この文章を書くときにも使っています(笑)

ただ、C やPythonなどのコンピュータ言語を文法に応じて色づけする Syntax Highlightng の方法が MultiMarkdown では見つかりませんでした。そこで、もう一つの Markdown の拡張版 Kramdownを [Service] メニューから利用できるようにしました。

Kramdown は Rouge や Coderay の Syntax Highlightng ができます。ここでは Coderay を利用しました。Kramdown と Coderay のインストールの方法はそれぞれのサイトを参照してください。ちなみに、 Kramdown のネイティブは Ruby ですが、macOS に標準付属の Ruby で動作しますので気楽です。
[Service] メニューから呼び出せる命令は macOS に標準付属の Automator.app を使えば簡単にできます。Automator.app はアイコン プログラミング風の極簡単なものだけでなく、Shell Script や Python などを呼び出してもう少し細かな制御もできます。ここでは Kramdown をそのネイティブである Ruby 経由で Automator.app から呼び出します。

Automatorで [ファイル > 新規] を選択し、表示されたウィンド内の [書類の種類を選択してください] の枠から {クリックアクション] を選択する。

[ワークフローが受け取る現在の項目: ] ポップアップメニューから [テキスト] 、[検索対象] ポップアップメニューは初期値の [すべてのアプリケーション]、[入力] はそのまま、[選択されたテキストを出力で置き換える] チェック ボックスをクリックしてチェック マークを入れる。[イメージ] と [カラー] は初期値のままとします。

左欄の [アクション] タブから [ユーティリティ] を選択し、その右側のリストから [シェルスクリプトを実行] を右欄にドラッグ ドロップします。表示されたコラムの [シェル:] ポップアップメニューから [/usr/bin/ruby] を選択し、[入力の引き渡し方法; ] ポップアップメニューから [引数として] を選択します。
[シェルスクリプトを実行]のテキスト エリアに以下のコードを入力します。
#!/usr/bin/ruby
require 'kramdown';
markdown = ARGV[0];
markdown = +markdown
markdown.force_encoding("UTF-8")
print Kramdown::Document.new(markdown, {coderay_line_numbers: nil}).to_html;
以上で、[保存…]を選択すれば、ファイル名をkramdownなどと指定して、/Users/USER_NAME/Library/Servicesに保存されます。使い方は通常のサービス メニューと同じで、テキストを選択してから呼び出します。Microsoft Word でも使えますが、2008年版の Word では呼び出せませんでした(笑)

・・・と、ここまで書いて、上記のMultiMarkdownを[Service]から呼び出すツールは機能縮小版のMultiMarkdownがそのまま入っていることが分かりました。せっかく、MultiMarkdownをインストールしていますので、これを使わない手はありません。

上記と同様にAutomatorから [シェルスクリプトを実行] を使えるようにして、表示されたコラムの [シェル:] ポップアップメニューから [/bin/bash] を選択し、[入力の引き渡し方法; ] ポップアップメニューから [引数として] を選択します。[シェルスクリプトを実行]のテキスト エリアに以下のコードを入力します。
echo "$1" | /usr/local/bin/multimarkdown
あとは、上記と同様に処理します。

2019年1月2日水曜日

BBEditのPreviewフィルタ

以前にも書きましたが BBEdit の Preview 機能で拡張版の Markdown を表示できます。以前は、 Markdown の拡張版 MultiMarkdown でも利用でき、表も描画できることをご紹介しました。

少し工夫することで kramdown でも Preview に表示できます。kramdownは C や Python などのプログラム コードを色づけしたHTMLを出力できます。kramdownのインストールに関してはこのページを参照してください。macOSはRuby 2.x がインストールされていますので、上記ページの Mac OS X 項目にある命令を一つ実行するだけです。

kramdownのインストールが終わったとして・・・まず、~/Library/Application Support/BBEdit/ の中に Preview Filters という名前でディレクトリを作ります。既に Preview Filters がある場合はそのディレクトリを使ってください。

次に、Ruby を使ったShell Scriptを書きます。Shell Script の書き方や設定は他のサイトを参照してください。BBEditで以下のコードを書いて(コピー ペーストして)保存します。ここではファイル名を kramdown にします。保存先は先ほどの~/Library/Application Support/BBEdit//Preview Filters/ の中です。
#!/usr/bin/ruby
require 'kramdown'
markdown = $stdin.read
markdown = +markdown
markdown.force_encoding("UTF-8")
print Kramdown::Document.new(markdown).to_html
インストールの作業は以上です。

Preview で見るには、Markdown ファイルをBBEditで開き、[Markup > Preview in BBEdit] を選択します。次に、Preview ウィンドウ内にある[Filter]タブのプルダウンメニューから kramdown を選択します。

なお Kramdown の Option を設定する場合には最後の行のKramdown::Document.new(markdown).to_htmlのなかのnew(markdown の後に ', {}' を入れて、{}の中にOption を設定してください。Kramdown の Option は Google などで検索すると、この書式と共に色々と出てきます。

2018年11月26日月曜日

ESP-32マイクロ コントローラの基板は幅広のため、EIC-301ブレッド ボード二つをつないで搭載しました。


EIC-301ブレッド ボードには、二つ以上つなぐための機構(溝と突起)あります。


EIC-301は比較的安価ですし、他に使い回しもできます。ブレッドボードを接続しなければ配線できる数は増えますが、強度不足でピンが曲がり接触不良になるなどの不要なリスクを避けています。EIC-301ブレッド ボード二つをつないでESP-32がマウントできるかを確認するためにネットを探したのですが、探し方が足りないのか記事も写真も見つけられませんでしたので写真を公開します。・・・とは言うものの、まだ配線して動作検証していません (笑)

2018年11月2日金曜日

Markdown の表の罫線

Markdown のオリジナルでは表を描く機能が定義されておらず、表を描くには拡張版の Markdown を利用することになります。Markdown の拡張版はいくつかありますが、MultiMarkdownkramdown で表を書くと、とうぜん罫線が表示されません。通常は、出力された HTML ファイルをすこし書き換えてcssファイルで設定すると思いますが、とりあえず表示したいときに面倒です。そんな時のアイデアです。

kramdown

GitHub にも採用されているkramdownはなかなか高性能で、初期設定ではHTMLのタグを書くと出力にそのまま出してくれます。これを利用して、Markdownの文頭あたりに以下の一文を入れます。

<style type="text/css">
table {
    border-collapse: collapse;
}
table, th, td {
    border: 1px solid black;
}
</style>
たとえば、以下のようにします。

<style type="text/css">
table {
    border-collapse: collapse;
}
table, th, td {
    border: 1px solid black;
}
</style>
| First Header | Second Header |         Third Header |  
| :----------- | :-----------: | -------------------: |  
| First row    |      Data     | Very long data entry |  
| Second row   |    **Cell**   |               *Cell* |  

MultiMarkdown

MultiMarkdownは以前にも書きましたが BBEdit の Preview 機能で拡張版の Markdown を表示する時に便利です。BBEditではPreviewで表示する時のcssファイルを指定できます。以下のような css ファイルを書いて、 DefaultCSS_ Markdown.css.css という名前で保存します。保存する場所は ~/Library/Application Support/BBEdit/ の中に Preview CSS と言う名前のディレクトリ作ります。既に Preview CSS がある場合はそのディレクトリを使ってください。

table {
    border-collapse: collapse;
}

table, th, td {
    border: 1px solid black;
}
なお、ファイル名を DefaultCSS_ Markdown.css.css とするとPreviewの初期値として利用できます。詳しくは、BBEditのwikiを参照してください。

2018年8月25日土曜日

Python 3.7

Python 3.7がリリースされています。
我が家ではHomebrewを介さず、Pythonのサイトからダウンロードしてインストールしていますが、インストーラの最後に以下のようなコメントが表示されました。

詳細は調べていませんがSSLに色々とあったことは聞いていたので、指示に従って/Applications/Python 3.7/にあるInstall Certificates.commandを実行しました。しかし、Terminalが起動して、その画面でインストールは成功したけどpipが古いと言われました。

You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.


そりゃ、Pythonが古くなったから3.7をインストールしたのでpipも古いのは当然です(笑)

pip3 install —upgrade pipで18.0にしました

ところで、以前は'pip''pip3'を使い分けていたように記憶しているのですが、'pip -V'でも'pip3 -V'でも同じ'pip 18.0'を返してきます。歳とってボケてきたかな(苦笑)