文字列の抽出2017年05月06日 07:28

文字列の抽出
文字列の抽出


一応、cutコマンドを使って、dialogからゲットした日付を加工する。

#!/bin/bash

HIDUKE=$(dialog --calendar hoge 0 0 3>&1 1>&2 2>&3)

if [ $? -eq 0 ]
then
echo "get " $HIDUKE
else
echo "no get"
fi

echo -n date: ; echo $HIDUKE | cut -c 1-2
echo -n month: ; echo $HIDUKE | cut -c 4-5
echo -n year: ; echo $HIDUKE | cut -c 7-10

キタネエなあ・・・。

まあいい。

せっかく変数に入れたんだから、パラメータ展開というのをやってみようと思った。

(パラメータ展開を利用して部分文字列を取得する。)
http://qiita.com/koara-local/items/04d3efd1031ea62d8db5

「オフセットと長さを指定して文字列を取得する
指定方法
${パラメータ:オフセット:長さ}
部分文字列抽出
#!/bin/bash

HOGE="abcdef"

# オフセット位置から長さ分を取得
echo ${HOGE:0:2}
# -> ab

echo ${HOGE:2:2}
# -> cd

echo ${HOGE:4:2}
# -> ef

# 長さを省略した場合はオフセットから最後まで出力
echo ${HOGE:2}
# -> cdef

# 長さにマイナスを指定した場合は最後からマイナス分引いた位置までの長さになる
echo ${HOGE:0:-2}
# -> abcd

# オフセットの位置にマイナスを指定した場合は文法として別のパラメータ展開になる(デフォルト値の指定)
# 指定した変数が空文字列の場合は右に指定した文字が入る
echo ${HOGE:-2}
# -> abcdef
HOGE=
echo ${HOGE:-2}
# -> 2         」

というわけで、若干加工する。

#!/bin/bash

HIDUKE=$(dialog --calendar hoge 0 0 3>&1 1>&2 2>&3)

if [ $? -eq 0 ]
then
echo "get " $HIDUKE
else
echo "no get"
fi

echo date:${HIDUKE:0:2}
echo month:${HIDUKE:3:2}
echo year:${HIDUKE:6:4}

まあ、こんなもんか。

シェルスクリプトは、長大な処理を長々と書くのには向かない。

コマンドを繋げて、取り込んだファイルやデータを分岐させたり繰り返したりして加工しながら、何らかの成果物を得て、終了すべきツールだ。

基本的に、外部からの入力を受け付けて何かするという処理じゃあない。

それは、シェルスクリプトを使う側が、スクリプトの中にカキコすればいいわけだ。

バッチファイルだからな。

それでも、人様に使っていただくテキストベースの仕掛けを書かなければならないとしたら、なかなか便利な仕組みには違いない。

カレンダー表示とかが出ると、ちょっとなごみ系になる(そうかあ?)。

なんか、少し、やる気が出てきたような気がするな・・・。

CAPCLIP2017年05月06日 23:50

CAPCLIP
CAPCLIP


2年ほど前に発売されたブルートゥースマウスだ。

秋葉原に行って、ゲットした。

他のマウスを探しに行ったんだが、偶然見つけて衝動買いに走った。

ソフマップでポイント使って、合計で2600円くらいだったような。

ガジェットで充電しながらマウスを使いたい時に、マイクロUSBポートが1つしかないとどちらにするか悩むわけだ。

まあ、操作対象が複数あるから、残タン(じゃない、電池の残量)見ながら、ガジェットを切り替えていけばいいんだが、さすがに面倒になった。

で、欲しくなったのがブルートゥースマウスというわけだな。

キーボードは、無線のを使っているので、不自由はない。

小さめのブルートゥースマウスなら何でもよかったんだが、携帯性を考えて、使いやすさは犠牲にする。

バッグの中に入れて、持ち運びがしやすいのがいい。

まあ、考えてみれば、その状況下では充電しながら使うことはないから、マイクロUSBポートに接続する有線マウスでも良かったんだがな。

どーせ、使いやすさ優先の機種を、もう一つ買うことになるんだろう。

まあいい。

(Bluetooth®ワイヤレスマウス“CAPCLIP”M-CC1BRシリーズ M-CC1BRBU)
http://www2.elecom.co.jp/products/M-CC1BRBU.html

「※ご使用いただくうちに、汗や油によってマウスのラバー部分に白い粉のようなものが現れることがございます。
こまめにお手入れをしてお使いください。」

「充電可能回数 約500回」

そう、内蔵リチウムイオン電池で駆動される。

軽いことも重要だな。

スイッチ切って、再接続するまでの時間が短いのも美点だ。

在庫がピンクとブルーしかなく、浮沈子はブルーを買ったが、イエローとかホワイトがいいかも。

ケースにも、色がちゃんとついているというのが芸の細かいところだ。

ブラック出したり、透明のを出せば受けると思うんだがな。

ゴムの胴巻きとぺなぺなの蓋を何とかしてもらいたいんだが、胴巻きの方は、ケースに収納したときの滑り止めになっているし、蓋はコスト削減でどうしようもないんだろう。

使用感はサイテーだ。

それを追求したわけじゃないから仕方ないが、許容範囲を超えている。

長時間の使用にはとても耐えられそうもない。

こういうものは、ギミックで選んではいけないということだな。

1200カウントの分解能に不足はない。

要は、手に馴染まないというだけの話だ。

このアイテムを使って、心身症にでもなったら、また報告する。

OSバージョンアップ2017年05月07日 11:33

OSバージョンアップ
OSバージョンアップ


通知は来なかったんだが、待ちきれなくなって、ゲートウェイのOSをクリエイターズアップデートに上げた。

それ程手間はかからなかったが、折角作った環境が崩れるのは痛い。

デスクトップのアイコンの字が読めないので125パーセントに上げたら、あらゆるアプリに影響が出て、再調整が必要になっている。

なぜ、デスクトップとかの字だけ、デカくできなくしたのか。

不可解だ。

まあいい。

M社の方針に従って、下々は生きていかざるを得ないのだ。

これからは、半年に一度、今度はどんな苦行に耐えなければならなくなるのかと、びくびくしながら生きていくことになるんだろう。

それがいやなら、自分でOSを書くか、CUI(CLI?)ベースの世界で生きるしかない。

7インチのケイアンは、Cドライブの容量が足りなくて、とうとうアップグレードできなくなった。

16Gしかない(といっても、十分巨大ですが)ので、8Gも空けられるわけがないのだ。

事実上、文鎮化することになるわけで、なんとかハッキングして、ネイティブのリナックスを起動させたいもんだな。

さて、アップデートしたのは、もちろんVRとか3Dお絵かきをしたいわけではなく、BUWの新機能(というか、バグフィックス)を確認したかったからだ。

(bash on Windowsでコピー&ペースト)
http://qiita.com/onelittlenightmusic/items/8c62b6ff6dd557dcacd3

「「簡易編集モード」をon」

「コピー:
カーソルでドラッグすると範囲指定になります。
指定した状態で、右クリックでコピーとなります。」

「ペースト:
ウィンドウ内で右クリックすると、クリップボードからコピーします。」

知らなかっただけで、従来から出来てたわけだ。

まあ、おもわずホイールボタンを押してしまうのはご愛敬だがな。

半角/全角キーで日本語入力を切り替えることが出来るようになり、浮沈子の日常的には十分な機能を備えることになった。

もう、この快適さからは逃れられそうもない。

一方、コマンドプロンプトはスタートボタンの右クリックから消えた。

これからは、パワーシェルの時代だろう。

テキストベースの世界は、表層は大きくは変わらないが、中身はどんどん変わっていく。

弄っている対象は、最早、平文のテキストではない。

まあいい。

それが技術の向上というものだし、コンピューターの進化というものだ。

昨日、秋葉原に一人で行ったついでに、本を1冊買ってきた。

(Unix考古学 Truth of the Legend 単行本 – 2016/4/28)
https://www.amazon.co.jp/Unix%E8%80%83%E5%8F%A4%E5%AD%A6-Truth-Legend-%E8%97%A4%E7%94%B0-%E6%98%AD%E4%BA%BA/dp/4048930508

「内容紹介:
情報化社会の成立とともに進化を続けてきたUnix。その歴史は数々の伝説に彩られている。Unixを支えた多くの天才的技術者は何を目指し、今日の技術基盤はどのように確立したのか。その真実が明かされる。」

読み始めたばかりだが、Whirlwind(つむじ風)というMITのプロジェクトの存在が明かされている(つーか、浮沈子が知らなかっただけ?)。

バッチ処理のような、一方通行ではなく、対話的コンピューター操作を実装しようとする試みだ。

(ケン・トンプソンの誕生日(1943))
https://www.wizforest.com/diary/160204.html

一部は、この記事でも読める。

UNIX誕生前夜には、コンピューターを巡る様々な取り組みがあった。

商業的に成功したコンピューターだけが身の回りにあるが、それは、まあ、結果論に過ぎない。

そして、コンピューターは、今も、この瞬間も変化し続けている。

MS-DOSが動くIBM-PC互換機と、その後継だけがコンピューターじゃあない。

ああ、マックもあるけどな。

多様な可能性を追求し、時代の変化と技術の進歩の中で、その姿を変え続けている。

この、永遠に未完成であることを運命づけられたコンピューターという機械は、ある意味では究極の機械だ。

それだけでは何事をもなし得ないが、あらゆることを可能にする。

その可能性を引き出すことが出来るかどうかは、ソフトウェアにかかっている。

機械としての実装は、ソフトウェアと対を成して進化し続けている。

より高速になり、より大規模になり、通信し、連携し、何かを動かし続ける。

動物の脳が、進化の形跡を残して、拡張し続けるように、コンピューターの中にもそういった痕跡が残っていくんだろう。

動くこと、他の生物を捕食することによって、生存能力を高めてきた動物は、必然的に脳の肥大化を招く。

高度な社会化を遂げた人間のような動物は、まるでネットワーク化されたコンピューターのような感じだ(ああ、例えが逆か・・・)。

ニューラレイスでコンピューターと一体となった人間の脳が、物理的肥大化を止めることが出来るかどうかは分からない。

コンピューターの進化が、人間の進化を超えるのは、時間の問題だな。

妄想は果てしなく広がり、読書は遅々として進まない・・・。

ぐちゃぐちゃ・・・2017年05月08日 04:49

ぐちゃぐちゃ・・・
ぐちゃぐちゃ・・・


シェルスクリプトのお勉強の一環として、数字を入力してもらうインターフェイスを作ってみる。

#!/bin/bash

dialog --clear --msgbox "何か数字を入れてください。" 0 0
while :
do
clear
echo -n "何か数字を入れてください。>>"
read SUUJI
if [ "$SUUJI" = "" ]
then
whiptail --clear --msgbox "空打ちです。何か数字を入れてください。" 0 0
elif [ "$(expr $SUUJI + 1 2>&1 >/dev/null)" = "expr: 整数でない引数" ]
then
whiptail --clear --msgbox "整数を入れてください。" 0 0
else
dialog --clear --yesno "この数字でいいですか?"$SUUJI 0 0
if [ $? -eq 0 ]
then
dialog --clear --msgbox "$SUUJIを取得しました。" 0 0
break
else
SUUJI=""
whiptail --clear --yesno "もう一度、お願いします。" 0 0
if [ $? -eq 0 ]
then
continue
else
whiptail --clear --msgbox "数字は取得されませんでした。" 0 0
break
fi
fi
fi
done
clear
echo $SUUJI

何のコメントも入れなかったので、後から見たら(今でも?)、何が書いてあるのか分からなくなるに決まっている。

dialogとwhiptailと、readが混在していて、何が何やら・・・。

背景色の変更方法を調べたり、テキストを取得するボックスの使い方を調べるのが億劫で、3者混合というわけだな。

NULL値を排除したり、整数以外の入力を排除したり、一応、気を使っているんだが、調べるのが大変で時間を食った。

思ったような画面遷移にならなかったが、まあ、こんなもんか。

UNIX考古学は、第1章を読み終え、いよいよ、UNIX誕生の第2章に入った。

a.outというコンパイル後のターゲットファイルの名前、黒板に書かれた構想しかなかった「チョークファイル」の実装・・・。

1969年の夏、UNIXは、アセンブラ言語で書かれたシステムプログラムとして誕生する。

目的はただ一つ、スペーストラベルというコンピューターゲームをするだめだった(そうなのかあ?)。

スペーストラベル自体は、クロス開発環境(GEマシン)の上でコンパイルされ、実行ファイルとして、紙テープに打ち込まれてDECのPDP-7というマシンの上で動いていたが、PDP-7上で開発環境を得るために、アセンブラでゴリゴリとツールを書いたらしい。

UNIXがCで書かれたのは、もっと後の話だ(1973年)。

そもそも、何をもってUNIXとするかという話もある。

商業的な定義はあるんだろうが、このPDP-7で動いたプログラム群をそう呼ぶかどうかは、いささか疑問があるな。

(PDP-7)
https://ja.wikipedia.org/wiki/PDP-7

「1969年、ケン・トンプソンはPDP-7上でアセンブリ言語で最初のUNIXを作成した。」

「当初の名前は Unics であり、Multicsを連想させるちょっとした駄洒落になっている。」

「実際にはUNIX以前にSpace TravelというゲームをMulticsの元となったGE 635上からPDP-7に移植しており、後にこのゲームがUNIX上で動作するようにしている。」

しかし、1969年当時は、Unicsというシャレを意識した名前すらない。

つまり、1969年にPDP-7で動いたプログラム群がUNIXだというのは、後知恵に過ぎない(たぶん)。

UNIXが持つ様々な特徴は、こういった初期の開発状況の中から、必然的に生まれてきたもの様に思われる。

誰かが、教祖になって広めたわけではない(後には、大勢教祖が出てくるようですが)。

69年、後にUNIXと呼ばれることになるシステムプログラムが、DECのマシンの上で動き始めた。

それは、マルチクスというオペレーティングシステムの開発から手を引いたベル研究所の片隅で、ひっそりと姿を現す。

まだ、C言語は、影も形もない。

コンピューターの使用が、時間貸で行われていた時代に、研究所の片隅に打ち捨てられていた古ぼけたミニコンで動かすためには、大そうなプログラムを書くわけにはいかない。

しかも、当時のAT&Tは、コンピューター事業への参入を、法律で禁じられていた。

さて、物語は、この後、意外な方向に動いていくのだが、そして、それが今日に続くUNIXの潮流を生み出す理由になるのだが、それは本とかネットを見ればいくらでも書かれている。

UNIXは、潤沢な国家予算や、膨大な人員、明確なコンセプトや、当代最高性能のコンピューターを使って生まれたわけではない。

大っぴらには出来ない理由(コンピューターゲームを、無料でやりたい!)が動機となって、ベル研が撤退したマルチクスのスタッフが、夏休みの1か月間で、古ぼけた誰も使っていなかったミニコン上に、アセンブラで実装されたポッチリのプログラム群が始まりだ。

何の始まりかは、今でも分かっていない。

それは、今風のコンピューターの使い方の始まりだったともいえるし、これから先のコンピューターの使い方を変えていくかもしれない動きの始まりなのかもしれない。

UNIXというのは、始まりが重要なのではない(と思う)。

市場を独占していた大メーカーでなければ作れないと言われたオペレーティングシステムを、大勢が寄ってたかって(!)発展させ続けるというムーブメントを生み出したことが重要だな。

大型汎用機からパソコンの時代になっても、そのことは変わらない。

それだって、当時のAT&Tがコンピューターを商売に出来なかったという事情が背景にある。

それが出来たなら、違った展開になっていたかもしれない。

そして、コンピューターを対話的に個人が使うという、信じられない時代への扉をこじ開けることになる。

ああ、その先は、もう少し読んでからにしよう。

浮沈子は、巷に溢れているスマホやタブレットの源流にあるUNIXの話が好きなだけだ。

M社のパソコンでも、UNIXのプログラムがネイティブで走る時代になった。

日本語も出るしな。

ダイアログは、枠が崩れないから始めたんだがな。

バージョンアップした途端に、ぐちゃぐちゃになった。

まあいい。

そのうち、ちゃんと出るようになるんだろう(設定すれば、今でも出るのかも)。

やりたいことがあって、それを実現するためにプログラムを書くというのが自然な流れだ。

ケネストンプソンが、本当にゲームやりたかっただけかどうかは知らない。

(ケン・トンプソン)
https://ja.wikipedia.org/wiki/%E3%82%B1%E3%83%B3%E3%83%BB%E3%83%88%E3%83%B3%E3%83%97%E3%82%BD%E3%83%B3

「ハッカー仲間からはケン・トンプソン (Ken Thompson) と呼ばれている」

「私はいつも論理に魅了されていて、小学生のころ既に二進法などの算数問題を解いていた。それは単に私が魅了されていたからだ」

論理に魅了されたというのは聞こえがいいが、オタクなだけかもな・・・。

マクロン2017年05月08日 05:57

マクロン


フランスの大統領選挙。

まさか、ルペンが当選するとは思っていなかったが、事前の予想通り、マクロンになったようだ。

(マクロン氏が勝利宣言 「大きな名誉で大きな責任」)
http://www3.nhk.or.jp/news/html/20170508/k10010973161000.html

「非常に大きな名誉で大きな責任を感じている。私に投票してくれたすべての国民に感謝したい」

この人物のことは良く知らない。

しかし、ブレグジットの時にロイターが流した記事は、今でも鮮明に覚えている。

(英国がEU離脱なら、仏から移民流入させる─仏経済相=FT)
http://jp.reuters.com/article/macron-imm-idJPKCN0W5123

「英国が6月の国民投票の結果、欧州連合(EU)から離脱するならば、フランスから英国への移民流入を食い止めていた国境管理をやめると警告した。」

さてさて、喧嘩っ早い若い大統領は、現実の政治の中で、どういう舵取りをしていくんだろうか。

浮沈子は、結構柔軟に対応していくと思っているんだがな。

つーか、そうしなければEUは崩壊するしかない。

世界がバラバラになろうとしている今こそ、求心力が必要だ。

フランス国民の選択は正しい。

英国は辛いところだ。

キビシー選択になるだろうな。

「集団エネルギーは新たな関係を再構築するのではなく、今までの絆を解消することに向けられるだろう」

英国の離脱は、まあ、想定の範囲内とはいえ、EUに与えるダメージは大きい。

ここで踏みとどまって、再興を期すしか選択肢はない。

「マクロン氏の勝利でドイツにも責任が生じる。マクロン氏が大統領として成功しなければ、5年後にはルペン氏が大統領に選ばれることになるからだ」

NHKの記事では、ドイツ外相が核心を突いたコメントを出している。

市場は、既に選挙結果を織り込み済みだから、大きくは動くまい。

しかしなあ、フランスの成功って、一体何なんだろう・・・。

マキロン?。

あれは、赤チンの代わりの傷薬だ・・・。