投稿

10月, 2018の投稿を表示しています

gnuplotのヘルプ機能の使い方

gnuplotにはいろんな機能があるのですが、コマンドライン操作が主体であるためどんな機能や設定があるのかを把握するにはドキュメントなどを頻繁に調べる必要があります。 (GUIがあるソフトのようなマウスでメニューから機能を選んで探すみたいなことが出来ないため) 調べるにはドキュメントを見て探すのもいいのですが、gnuplotのヘルプ機能を使えば項目を探す手間を減らすことが出来ます。 ヘルプ機能の使い方 ヘルプ機能は、インタラクティブモードに入っているときに help と入力して実行すると表示されます。この場合、gnuplotの使い方の概略などが出てきます。ここから各項目のヘルプを見るにはもう少し操作が必要です。 各項目を調べるには help 項目名 とすればいいのですが、まずどんな項目名があるのか把握しておく必要があります。 その場合は help ? と実行すると項目名(トピック)の一覧が表示されます。その一覧からどの項目を見たいのか決めたら help plot のように項目名を付けて実行します。 サブトピックの調べ方 また項目によってはさらに下位の項目(サブトピック)が存在します。例えばplotコマンドのfor機能を調べる場合は以下のようにします。 help plot for サブトピックにどんなものがあるのかはトピックの説明に書かれているのでそこから選びましょう。 さて、サブトピックを見る方法としてはこの他に、トピックを読んでいる状態からサブトピックに入って読む方法もあります。 まずトピックを読んでいると画面の一番下に 「Press return for more: 」 と表示されています。リターンキーを押すと次のページに移ります。 そしてサブトピックがある項目では最後のページになると画面の一番下の表記が 「Subtopic of plot: 」 のように変化します。この状態で調べたいサブトピックの項目名を入力することでそのヘルプを見ることが出来ます。 最後に Webで検索しても役立つ情報はたくさん出てくるのですが、大元の情報はやはり公式のドキュメントやヘルプになります。どういった調べ方がベストなのかはその人次第なので一概にこうすればいいというものでもないですが、やはり公式の情

gnuplotで標準入力からコマンドを受け取りプロットする

イメージ
以前のブログ記事 gnuplotでコマンドラインから日本語入力したい場合の対処方法 で「-e」オプションを用いることで、gnuplotのコマンドラインに入らずにグラフをプロットする方法を解説しました。 (gnuplotのコマンドラインのことはインタラクティブモードと言うようです。またコマンドラインに入らずに実行することはバッチモードと言うようです。以降、用語としてインタラクティブモード、バッチモードを使っていくことにします) 標準入力から受け取る方法 gnuplotのバッチモードでは「-e」オプションの他に、標準入力からコマンド文を受け取ってプロットする方法があります。これはgnuplot以外のコマンドでもよく用いられている方法で、コマンドラインオプションに「-」を用います。 例 簡単な実行例は以下のようになります。 echo "plot x" | gnuplot -p - echoで「plot x」という文を生成、それをパイプを用いて標準入力としてgnuplot側に渡しています。 (gnuplotの-pオプションは以前のブログで説明しましたが「-persist」オプションのことです) 複数行の命令文を渡す場合は以下のようになります。 echo "set sample 500; set yrange [-1.5:1.5]; plot sin(x*3)" | gnuplot -p - 今回はechoで命令文を生成して渡しましたが、当然他のコマンドからでも渡すことが出来ます。「-e」オプションを用いる場合との違いはそれで、標準入力から受け取れることを利用すればシェルスクリプトと組み合わせるなど汎用的な使い方が出来るかと思います。 その他、gnuplot関連のブログ記事 Amazon データ解析関連書籍など

gnuplotで関数プロットの形がおかしい場合 : samplesの値の設定について

イメージ
gnuplotで関数をプロットしたとき、「そうはならないはずでは?」みたいなプロットになるときがあります。この場合の原因は そうなるはずと考えていたこと自体が単なる勘違いだった plotコマンドの書き間違い  plotの設定が不適切だった などに分かれるでしょう。1.と2.はよくあることなのでここでは考えないことにします。 3.についてもいろいろ状況によるのですが、今回は最も基礎的なsamplesの値の設定について解説していきます。 (追記 : 当初「sample」で説明していましたが、ドキュメントでは「samples」となっていたので表記をそちらに合わせました。なおコマンドからの設定ではsampleでもsamplesでもどちらも同じように使えるようです) 想定とは違うプロットになる例 まず plot sin(x) をプロットしてみます。これは特に問題はありません。 次に plot sin(x*5) をプロットしてみます。何やらカクカクしたプロットになってしまい、グラフ自体も単なるsin関数ではそうはならない形になってしまっています。 もっと分かりやすく plot sin(x*10) をプロットしてみると明らかにおかしいグラフになってしまうことが分かります。 samplesの値を適切に設定する こうなってしまう原因は、初期状態で設定されているsamplesの値が関数によってはプロットするには適切ではなくなるためです。 「samplesの値」とはなんぞや?というと、これはプロット時のサンプリングレートのことで、この値が大きければ大きいほどより詳細に関数をプロットすることが出来ます。 (ただ値を大きくすればいいというものではなく、あまりこの値を大きくするとプロット処理にかかる時間が長くなります) 通常は初期状態で設定されているsamplesの値で大丈夫なのですが、場合によっては値を変更して対応する必要が出てきます。 samplesの値の確認 まずいま現在のsamplesの値を確認するには show samples とします。すると以下のように出力されると思います。 sampling rate is 100, 100 ここではsamplesの値は100になっています。

bashでのコマンドライン引数の扱いについて : その1 ワイルドカード(*)の場合

イメージ
前回、bashでのコマンドライン引数を調べるサンプルプログラムを作ってみたので、さっそくこれを使って実際の扱いを調べてみることにしました。 前回のブログ記事↓ コマンドライン引数の扱いがよく分からなかったので調べるためにサンプルプログラムを作成 ワイルドカード(*)について まずコマンドラインでよく使うワイルドカード(*)がどう引数として渡されるのかを調べてみます。 状況 : ディレクトリ内にあるファイルは以下の6つ。 ここでサンプルプログラム(argvtest01.py)を実行 $ python3 argvtest01.py * すると以下のように出力されます。 argv1 = argvtest01.py argv2 = file01.txt argv3 = file02.txt argv4 = file03.txt argv5 = file04.txt argv6 = file05.txt ディレクトリ内にあるファイルのファイル名がそれぞれ別の引数に渡されています。 次にエスケープ文字を前に置いた場合 $ python3 argvtest01.py \* argv1 = * 引数に*(アスタリスク)が文字として渡されています。 シングルクォートで囲んだ場合 $ python3 argvtest01.py '*' argv1 = * これも引数に*が渡されています。 ダブルクォートではどうなるか $ python3 argvtest01.py "*" argv1 = * これも*が渡されています。 ドットを前に置いた場合 $ python3 argvtest01.py .* argv1 = . argv2 = .. となりました。隠しファイルを作っておいた場合はそのファイル名も渡されます。 今回は特に変わったことはしていないので、ほぼ想定通りの結果でした。 ワイルドカードを使う場合、シェルで展開させたい場合とコマンドにワイルドカードを渡してコマンド側で展開などに使いたい場合があるかと思います。そういった場合にどう書けばよいかはこれでだいたい分かるかなと。 また、ダブルクォートで囲んだ場合に展開されるのかどうかがたまに思い出せないこ

空模様(2018年10月21日〜27日)を映したタイムラプス動画

イメージ
2018年10月21日〜10月27日の空模様を映したタイムラプス動画をYoutubeにアップロードしています。 天気としては全体的に晴れが多かったです アップロードした動画は一週間分まとめたものになっています。 以下、Youtube動画内の各日付へのリンクと天気など情報になります。 10月21日 日曜日 おおむね晴れ 10月22日 月曜日 おおむね晴れ マーシャル諸島付近で台風26号発生 10月23日 火曜日 晴れ時々曇り 10月24日 水曜日 晴れ時々曇り 10月25日 木曜日 曇りのち晴れ 10月26日 金曜日 おおむね晴れ 10月27日 土曜日 曇り時々晴れ

コマンドライン引数の扱いがよく分からなかったので調べるためにサンプルプログラムを作成

コマンドラインからコマンドに引数を渡す際の挙動で、分かり難い状況🤔があったのでそれを調べるためにPythonでサンプルプログラムを作成してみました。 コマンドライン引数の扱いは、通常なら単にスペースで区切られているだけなので特に調べる必要はないんですけどね。ただ、ワイルドカードなどシェル補完がある場合の扱いがどうなるのかはちゃんと調べておきたいところ。それとシングルクォート、ダブルクォートを複数組み合わせて使うような場合とか。 作ったサンプルプログラムは以下に示した通り。 import sys l = len(sys.argv) for i in range(l) : if i == 0: continue print("argv{0} = {1}".format(i, sys.argv[i])) 以上をtest01.pyとして保存して次のようにコマンドライン引数をいくつか渡して実行  $ python3 test01.py test1 test2 test3 すると以下のように1つずつコマンドライン引数が分離されて出力されます。 argv1 = test1 argv2 = test2 argv3 = test3 argv[0]にはスクリプトファイル名が入ってるだけで引数を調べる上では必要ないため、サンプルプログラムではそれは出力されないようにしています とりあえずこれを元にいろいろ調べてみようかなと思います😉 Amazon プログラミング関連書籍など

bashでコメントアウトする方法(1行のみの場合)

イメージ
bashでは行頭に「#」を書くと、その行はコメントとして扱われます。 例えばコマンドラインから $ # test sleep command $ sleep 3 とすると、1行目は行頭に「#」があるのでコメントとして扱われ、2行目だけ実行されます。 また行頭ではなく行の途中に「#」を書くと、行のそれ以降がコメントとして扱われます。 例えば $ date # output current date とすると「date」のみ実行され、「# output current date」はコメントとして扱われることになります。 行の途中に「#」を書く場合の注意点として、「#」の前にスペースを入れないとコメントとして扱われません。 例えば $ echo aaa#bbb と実行すると $ aaa#bbb と出力されます。つまりはスペースを入れないとコマンドや文字列の一部として扱われてしまうことになります。 コメントアウトの使いどころ シェルスクリプトでスクリプトファイルを書いているときは、コメントアウトで簡単にどんな処理をしているのか説明を書いておくと後から見た時に内容がわかりやすくなるでしょう。 コマンドラインにおいては、長い処理の途中までの動作を調べたい場合に途中で区切っておく用途などでしょうか。あとは単にメモとしてコメントを書いておく場合など。 Amazon シェルスクリプト関連書籍など

[気象] 秋から冬にかけて毎年の最低気温が0℃未満に下がった日を調べる

イメージ
今年も少し寒くなってきました さて、まだ日中は暖かいですが、朝晩は結構冷えるようになってきました。もう10月も終わりに近く、間もなく冬になって寒くなっていきます。こちらは冬はそこそこ雪が積もるので、いまのうちから何かと準備が必要になってきます。灯油を確保したりストーブやコタツを出したり、除雪で邪魔になりそうなのを片付けておいたり。 テレビのCMでももうスタッドレスタイヤの宣伝をしてますね。そろそろ車のタイヤもスタッドレスタイヤに履き換える必要も出てきます。 いつもはいつ頃から寒くなっていたのか? まぁ日常生活の準備はいいとして、いつもは一体いつぐらいから本格的に寒くなっていたのだろう?というのが気になりました。で、気象庁のホームページから過去の気象データをダウンロード出来るので、これを利用して調べてみることにします。 気象庁 Japan Meteorological Agency   まず「寒くなる」という意味が曖昧過ぎるので、ただ単に気温データを持ってきてもどうにもなりません。ここはしっかり「何℃未満になったら寒くなったとする」と意味付けをしておきましょう。こうすることで気温データの数値を元に判定することが出来ます。 ただ「寒くなる」 というのも体感的なものですし、一体何℃を基準にするかは個人差もあるので、まぁ適当にやっていきましょう。 データを元に解析 まず最低気温が0℃未満、つまり水が凍る温度になったときを基準とします(あくまでも個人的に勝手に決めた基準)。また最高気温、1日の平均気温は今回は無視します。気象データをダウンロード出来るといっても一度にダウンロード出来る項目数が限られているので、始めから何でもかんでも扱えるではないです。仮にダウンロード出来る項目数に上限が無くても、何を解析するのか明確にしてからで無いと、無闇矢鱈にダウンロードしても意味がないですし。 で、今回は秋から冬にかけての最低気温が0℃未満になった始めての日を毎年のデータとしてグラフにしていきます。 (今回0℃未満で扱いますけど、0℃以下とした場合はちょっと日付はズレるかと思います) さてさて、早速データをダウンロードしようとしたのですが、一地点の最低気温だけでも毎日のデータを何年分も持ってこようとすると結構すぐにダウンロード条件に引っかかりま

Firefoxのアドレスバー右側にあるアイコンを表示したり非表示にしたりする方法

イメージ
Firefoxのアドレスバーですが、右側にいくつかアイコンが表示されています(自分の場合は以下の4つ)。 アイコン部分だけ拡大すると以下のようになってます。 アイコンは左から メニュー表示 Pocket スクリーンショット ブックマーク の機能となっています。 アイコンの非表示の仕方 さて、このアイコンですが使わない機能があれば非表示にすることが出来ます。非表示にすればその分URLの表示が長くなるので、使わない機能なら非表示にした方がいいでしょう。方法としては簡単で、アイコンをマウスを右クリックして表示される 「Remove from Address Bar」(英語のメニュー名の場合) のメニューを選べばいいだけです。 (メニュー表示アイコンは非表示には出来ない模様) アイコンの表示、再表示の仕方 さて、アイコンを非表示にするのは簡単なのですが、非表示にしたのを再び表示させるにはどうすればいいでしょう?これが結構分かり難いのです。 方法としてはアドレスバーのメニュー表示アイコンをクリックして、表示したいアイコンを右クリック。表示される 「Add to Adress Bar」 を選択するとまた表示されます。 非表示、そして再表示の操作方法を動画にしてみました。 こうして説明すると簡単に再表示出来るように思えるのですが、いざ方法を忘れていると意外に思い出すまでが大変だったりするかもです。 おまけ なお調子に乗ってアイコンをたくさん表示させるとアドレスバーはこうなります。 なかなか壮観ですが、使わないアイコンをいくつも並べるのは実用的ではないですね〜。 なお今回、Firefoxの英語のメニュー名で解説してきましたが、これは単に日本語設定にするのが面倒だっただけです…😓 Amazon ブラウザ関連書籍など

プログラミングでちょくちょく出てくるhogehogeとかfooとかbarって一体何なのか?という話

プログラミングについていろいろ情報を調べていると以前はよくhogehogeという語を見かけ、最近だとfooやbarを見かけるようになりました。 文字列の置換を例を上げると 「foo」という語を「bar」に置き換える みたいな感じで使われてます。 これらはサンプルプログラムの変数名としてよく使われてますね。後はソフトの機能説明とかにも。これらは特に語自体に意味はなく、単に仮の変数名や文字列として当てはめてるだけですよー、みたいな使われ方だと思っていました。 いままではなんとなくそういうものだと思っていただけですが、ふとした拍子に「果たしてこれらは具体的には一体なんなのか?」と気になってしまいました。まぁ取るに足らない疑問ですが、足の裏に付いた米粒みたいなものですかね?取らなくてもいいけど、一度気になってしまうと取らないと気が済まないみたいな。 さて、いざ調べるといってもちゃんとした意味があるんだろうか?と不安でしたが、そこは現代のネット知識の宝庫であるWikipediaに項目が出来てました。 コンピューター用語としてはMetasyntactic variable(メタ構文変数)と呼ばれるようです。 Metasyntactic variable - Wikipedia メタ構文変数 - Wikipedia またもっと広い分野においては Placeholder name - Wikipedia と扱われるそうな。日本語だと仮名とか仮称もそういった類いになるのかなと思います。 それにしてもWikipediaの記事を読むとおもしろいですね。プログラミング言語毎の差異について触れていたり、それぞれの語源がどうとかいろいろ書かれています。 まぁざっくりというとメタ構文変数というのは「意味のない名前」 という扱いのようです。 なぜにメタ構文変数などというのを使う必要があるのでしょう?というのを考えてみました。例えば、プログラミングのサンプルプログラムを説明するときに、何気なく変数に「child」と「parent」を使ってしまうと、説明を受ける方からすると「両者の変数に何らかのつながりがあるのでは?」と思われてしまう可能性があります。何気なく使った語が何か意味を持つものと思われてしまうと、余計な誤解を生じるかも知れない。 広く使われ

gnuplotのソースコードからのビルドとreadlineのライセンスについて

以下の内容はライセンスについてちょっとかじっただけの知識で書いているので、内容に認識の誤りがあったらすみません。また内容もあくまでも個人的な考えによるものです。そのことを踏まえて読んでいただければと思います。 これまでのブログでgnuplotでのコマンドラインからの日本語入力についていくつか記事を書いていたのですが、ある程度状況がつかめてきたのでここでまとめておきます。 (あくまでもここでするのはコマンドラインからの入力の話です。スクリプトファイルから読み込んだ際にグラフ上で日本語が文字化けするのはまた別の話。後者の場合は出力形式のフォントの指定の仕方などについて考えてみて下さい) gnuplotのコマンドラインからの文字入力については、ソースコードからのビルド時にreadlineに何を選ぶかに依存するようです。readline自体は文字の編集を受け持つライブラリのようで入力では特に関係無さそうに見えますが、実際にビルドオプションを変えて試してみると入力出来るようになったり出来なくなったりしました。 まずreadlineの機能は外部ライブラリで提供されるもので、その一つにGNU Readlineがあります。 GNU Readline - Wikipedia そしてこれを有効にしてビルドすると日本語入力が出来たのですが、ここでソフトウェアのライセンスについての問題が頭によぎります。 (ビルドしたソフトを私的に使用する場合ではなく、ビルドしたものを公開する段階で生じる問題) まずgnuplotは名前にgnuと入っていますがGNUとは関係なく、ソースコードのライセンスもGPLではありません。なので、gnuplotにGNU Readlineを有効にしたパッケージを公開してしまうとライセンス的に問題になり得るかなと。このへんはgnuplot、GPLのライセンスについてよく学んで判断する必要があります。自分で使うだけで公開なんてするつもりがなくても、どういった場合にライセンス問題となり得るかくらいは押さえておくべきでしょう。 さて、いま自分が使っているUbuntuで配布されているgnuplotのパッケージは、readlineとしてBSD editlineが使われているようです。(こちらについてはライセンスの制限はそれほど厳しくない模様) で

gnuplotでコマンドラインから日本語入力したい場合の対処方法

イメージ
日本語入力しようとすると何故か文字化け 以前のブログ記事の後半で、gnuplotのコマンドラインに日本語入力すると何故か文字化けしてしまうという件に触れました。 gnuplotのフォントの扱いについて簡単に解説  環境はUbuntu18.04LTSのGNOME Terminal(それとGuakeでも試してます)。上の動画で試しているように、GNOME Terminal自体では問題なく日本語を入力することが出来ています。しかし、gnuplotを起動するとそちらのコマンドライン上では日本語入力すると文字化けしてしまいました。gnuplot自体はGNOME Terminal上で動いているわけで、何故に文字の扱いが異なってしまうのかちょっと分からず。まぁこういう解決方法にたどり着くまでに時間がかかりそうな件はとりあえず一時的な対処方法を考えた方がいいでしょう。 対処方法 以前のブログにも書いたようにスクリプトファイルとして読み込めば日本語は扱えるわけですが、ちょっとしたグラフをプロットするのに一々スクリプトファイルを作って書くのはめんどうです。 そして、なるべく手間を減らしてコマンドラインのみで完結させる方法として、gnuplotのコマンドラインに入らずにプロットを実行するという手段があります。これはGNOME Terminalからのgnuplot実行時にプロット命令を全て渡してしまうという方法です。 簡単な書き方は以下のようになります。 gnuplot -persist -e "set title \"あめんぼあかいな\" ; plot sin(x)" gnuplotは「-eオプション」でそのまま引数を命令として渡すことが出来ます(命令文自体は""で閉じておきます)。命令文が複数あるときは「;」で区切ります。「set title」などテキストを渡す時に「""」を使ってしまうと引数で使っているダブルクォートとかち合ってしまうのでうまく回避させましょう(上の例ではバックスラッシュを使うことで回避)。また「-persist」オプション(-pと省略可)は実行後にも出力ウィンドウを残すという指定です。ただこれだとgnuplot自体は終了するので、出力ウィン

Thunderbird60へのアップデート後の雑感

しばらく前にUbuntu 18.04 LTSでもThunderbird60へのアップデートが来ていました。確かバージョン52からのアップデートは60リリース後にしばらく経ってからということで、Ubuntuで提供されているものも60へのアップデートは最近になってからとなっていたようです。 リリースノート Thunderbird — Release Notes (60.0) — Mozilla Thunderbird — Release Notes (60.2.1) — Mozilla ニュース記事 Mozilla、「Thunderbird 60」を正式公開 ~「Firefox Quantum」の“Photon”デザインを導入 - 窓の杜 「Thunderbird」v60.2.1が公開 ~「Thunderbird 52」系統のユーザーにも自動配信 - 窓の杜 さて、60へのアップデートで内部的にも外見も結構新しくなったわけですが、実際アップデートしてみるとアドオンでバージョンアップに追いついていないものはアップデート後に無効になってしまいました(無効になったアドオンを有効化するオプションはある模様) 。 せっかくバージョンアップしたので、この際あまり使っていないアドオンはこの機会に整理しました。外見としては新しいテーマが採用されています。機能面は添付ファイル周りの強化があったそうで。 さて、個人的に60にアップデートして良かったのは、メールのタイトルに絵文字が入っていると何故か物凄く大きく表示されてしまうバグが直っている点。 これ、タイトルに絵文字があるとメール一覧の時に他のメールのタイトルに重なってすごく邪魔になってました。ここ最近、英語圏のサービスだと絵文字が結構使われ出して来てるので、この対応は助かります。 (絵文字関係はソフトの他にOSなど環境依存もあるので、もしかしたらバグは環境依存だったかも) 後は実験的にメールファイルの扱いを変更出来る機能が付いたそうです。そして個人的には今回のバージョンでびっくりするほど大きく変わったというわけでもない印象。メールという日常的に使うものでソフトが大きく変わってしまうとそれはそれで面倒なので、52→60と一気にバージョンアップしたといってもこれはこれで安心かなと。 Amazon

gnuplotのフォントの扱いについて簡単に解説

イメージ
gnuplotはそれ自身ではフォントを扱わずに、出力端末に応じたライブラリを介してフォントを扱うようです。とはいっても、どの出力端末を選んでも最低限の設定はなされているようで、特にフォントがどうとか意識せずに文字を入力することは出来るかと思います。ただ、標準とは異なるフォントを使いたいとか、日本語が何故か出力されないみたいな状況になると、このフォントの扱いを考える必要が出てきます。 ライブラリごとに分類すると大まかなのは簡単には以下のように分類されます。 jpeg, png, gifではlibgdというライブラリ pngcairo, pdfcairoではcairo(pangoかも) eps出力ではpostscript x11やqtのようなウィンドウに出力する場合 またsvgファイルに出力した場合は、文字はsvgを開いた画像ビューアでレンダリングされるので、フォントの指定方法さえ間違わなければ大丈夫かと思います。 各種出力端末のフォントの扱いの詳しいところは、現在自分で使っているシステム側でこれらのライブラリがどうフォントが扱っているか分かればいいわけですが、どう扱われてるんですかね?いや、このへんは環境依存も大きいし情報も多岐に渡っているのでなかなかよく分からず…。 また、gnuplotのコマンドラインで日本語を打とうとすると、なぜか文字化けしてしまいますね…。これ、グラフをプロットする段階の前の問題なのでなんともかんともよくわからず。なおスクリプトファイルをloadする場合だと日本語をプロット出来ました。なかなか謎な挙動です。 スクリプトファイルからloadすれば以下のようにちゃんと日本語扱えてます(qt出力)。 今回は簡単な解説までにします。以後、機会があれば個々の出力端末ごとにフォントや文字出力について扱っていこうと思います。それではまた。 gnuplot関連のブログ記事

Firefoxでタブをピン留めして使うと便利という話

WebブラウザのFirefoxではタブをいくつも開いて使うことが出来ます。しかしいくつも開けるといっても、頻繁に使うタブはずっと開いておきたいという場合もあるでしょう。そういった場合に「タブのピン留め」という機能を使うとより便利な使い方が出来るようになります。 タブをピン留めする方法 タブを右クリックすると「 タブをピン留め」というメニュー項目があるので、それを選択するとそのタブがピン留めされます。ピン留めされるとタブはアイコンのみの表示でタブバーの左端に固定されます。ピン留めを解除するには ピン留めされたタブを右クリックしてメニューから「タブのピン留めを外す」を選択します。 個人的にピン留めしておくと便利だと思うのは、TwitterなどのSNS、カレンダー、何かしらのリアルタイムモニターです。あとピン留めでアイコンだけの表示になるといっても、いくつもタブをピン留めしていくとやはりタブバーの幅を取ってしまいます。個人的には多くても5つくらいに留めておくような使い方がいいのかな〜と思いますが、そのへんは広いディスプレイを使っているとかで事情も変わってくるでしょう。 より詳しくピン留めついて知りたい場合はFireoxのヘルプページをどうぞ。 ピン留めされたタブ | Firefox ヘルプ

空模様(2018年10月14日〜20日)を映したタイムラプス動画

イメージ
2018年10月14日〜10月20日の空模様を映したタイムラプス動画をYoutubeにアップロードしています。 天気としては晴れたり曇ったり。週の後半ほど天気が崩れやすかったです。 アップロードした動画は一週間分まとめたものになっています。 以下、動画中の各日付へのリンクと天気など情報になります。 10月14日 日曜日 https://youtu.be/80fHWv3LjCo?t=9s 晴れ時々曇り 10月15日 月曜日 https://youtu.be/80fHWv3LjCo?t=2m34s 曇りのち晴れ 10月16日 火曜日 https://youtu.be/80fHWv3LjCo?t=4m59s 曇り時々晴れ 10月17日 水曜日 https://youtu.be/80fHWv3LjCo?t=7m24s 曇りのち晴れ 10月18日 木曜日 https://youtu.be/80fHWv3LjCo?t=9m49s 曇り時々晴れ 北海道で火球の目撃情報多数(夜20時56分頃) 10月19日 金曜日 https://youtu.be/80fHWv3LjCo?t=12m14s おおむね晴れ(夕方雷雨) 10月20日 土曜日 https://youtu.be/80fHWv3LjCo?t=14m39s 曇り時々雨

Kindle Paperwhiteのソフトウェアバージョンを5.10.1.1に上げてみました

イメージ
さてさて久しぶりにKindle Paperwhiteのソフトウェアバージョンアップが来てました。今度のバージョンは5.10.1.1。 今回のバージョンではだいぶ機能追加がなされていて大まかなものとして ホーム画面の拡充 フォントや文字配置などのテーマカスタマイズ機能 バッテリー残量のパーセンテージ表示 ツールバーアイコンの下にテキストラベル となっています。一番便利そうなのはテーマカスタマイズですね。標準で3つ、それと補助的に1つ、現在設定の1つ、あとユーザーでカスタマイズしたものが追加出来るようになっています。読む本によってフォントやサイズ、文字の太さなどを変えるのに一々設定値を覚えておく必要が少なくなったってのは大きいです。 地味ですがバッテリーのパーセンテージ表示も気になるところ。どうもこれまでKindle Paperwhiteのバッテリー残量は公式でも数週間持つ(特定の読書スタイルでは)みたいな書き方でよく分からない部分がありましたが、これでバッテリー消費が追いやすくなったでしょう。いや、そんなことに気を取られないで本を読めってわけですが、まぁこう考えてしまうのは技術オタクのクセみたいなものなのでうんたらかんたら。 ここにきて大型アップデートが来たのは、今度Kindle Paperwhiteの新型が登場するのに合わせたものでしょう。新型は11月に発売されるようで、今度は防水機能が付くとのこと。上位機種のKindle Oasisには防水機能あるんですが、それがPaperwhiteにも来たと。発売時期的にはクリスマスシーズンに合わせて来てるので、結構売れそうな予感? 以前のブログ Kindle Paperwhiteのソフトウェアバージョンを5.9.6.1に上げてみました Amazonショッピングサイト Kindle Paperwhite

gnuplotでアニメーショングラフの作成 : rereadコマンド

イメージ
ここまでいくつかgnuplotでアニメーションするグラフを作成する方法を解説してきました。 gnuplotでアニメーショングラフを作成してみよう(Gifアニメ編) gnuplotでアニメーショングラフの作成 : ループ処理の基礎 以上はループ処理に絡めた説明だったわけですが、今回は説明を後回しにしていたrereadコマンドを使った方法について解説していきます。公式ドキュメントやサンプルプログラムではこのrereadを使った方法が紹介されていています。 gnuplot documentation ただアニメーションの基本から入るならまずはループ処理の説明と絡めた方がいいだろうと思いこのrereadを使う方法は後回しにしていました。 (前回までの話で少しくらい触れておいてもよかっただろうという点は反省) rereadコマンドについて rereadコマンドはloadコマンドと似ていてどちらもスクリプトファイルを読み込むものですが、rereadの方は一度読み込まれたスクリプトファイルを再度読み込み直すというものです。ただこのコマンドは扱いがやや特殊で、コマンドラインからの実行では何も起こりません。例としてgnuplotのコマンドラインからtest.gpというファイルを読み込む場合をみると > load "test.gp" > reread のようにしてもloadでは一回読み込まれますが、その後のrereadではtest.gpファイルは読み込まれません。コマンドラインからの入力では何も起こらないためです。ではこのコマンドはどう使えばいいかというと、読み込むスクリプトファイル内に記述して用いる形となります。 イメージ図で書くとこんな感じの処理になります。test01.gpというファイル内でrereadコマンドが実行されると再度test01.gpが読み込まれ、再びrereadが実行されるとまたtest01.gpが読み込まれ…という処理がずっと続いていきます。 さて、この処理だと延々とtest01.gpが読み込まれ続けるという無限ループになってしまうので、rereadの実行判定処理を書いておいてうまく処理を終了させます。 簡単にはスクリプトファイルに i = i + 1 if (i < 1

gnuplotでアニメーショングラフの作成 : ループ処理の基礎

イメージ
以前のブログ gnuplotでアニメーショングラフを作成してみよう(Gifアニメ編) でグラフのGifアニメを作成するのに「do for ...」のコマンドの構文を使ったループ処理を紹介しました。gnuplotにはそれ以外にループ処理を組む方法として「while」コマンドを用いることが出来ます。 今回のブログでは、ループ処理についての基礎的な部分を見ていくことにします。あとGifアニメ以外に、アニメーションの1コマずつをファイルを出力していく方法についてもループ処理に合わせて説明していきます。 whileコマンド ということでまずはちゃちゃっとwhileコマンドについて説明していきます。 構文の書き方は while (ループ条件) { コマンド文1 コマンド文2 コマンド文3 ︙ } のようになります。ループ条件を満たしている間はずっと構文の中のコマンドがループして実行され続けるというものです。 簡単なグラフのGifアニメの作成は以下のようになります。 set term gif animate delay 1 set output "test.gif" a = 1 while (a < 10) { plot sin(a+x) a=a+1 } set output 見て分かるように、aが10以下の場合にループが実行され、「a=a+1」の処理で1ずつaが加算されていきます。そしてaが10を超えるとループが終了。終了後の最後にset outputでGifアニメの終端処理を行うという形です。 aを1ずつ加算させていくという条件なら「do for ...」の方が扱いやすいと思いますが、まぁ条件についてはいろんな指定が考えられるわけでwhileを使った方がやりやすい場合もあるでしょう。 またループ処理に関しては「continue」や「break」 コマンドも使えることを押さえておくといいです。 do forコマンド do forについては以前のブログに書いていますが、今回はそれに補足する部分を簡単に書いておきます。。 まずdo forの条件の書き方は2つあります。1つは指定した変数に加算していく書き方。もう1つは指定した変数に文字列を入れていく書き方です。 加算していく書き

Firefoxで最後に別ウィンドウを閉じてしまい、メインウィンドウのタブが復元されなかった場合の対処

イメージ
WebブラウザのFirefoxを使っていて、設定で起動時に前回終了時のタブを復元するようにしている場合についてのお話。 「毎回新規セッションでタブはまっさらな状態で起動してるよー」って人にはほぼ関係ない話です、はい。 Firefoxのセッション復元及び新規ウィンドウについて さて、Firefoxで何か調べ物をしていていくつもタブを開いた状態にしていたとします。その途中で作業を中断して一端Firefoxを閉じます。そして作業再開でまたFirefoxを起動すると閉じた時点でのタブが復元されて、閉じる前の状態のまま作業が続行できます。便利。 またFirefoxではタブをいくつも開く以外に、新規のウィンドウを開いてウィンドウ毎に別々にタブを開いて操作することも出来ます。タブの復元で問題になるのがこういうケース。どうもFirefoxのタブ復元は最後に閉じたウィンドウのみのタブを復元するようです。なので、ついうっかり親ウィンドウを先に閉じてしまい、その後にサブで操作していたウィンドウを閉じると、次回にFirefoxを立ち上げた時に復元されるのはそのサブのウィンドウのタブになります。 「ウィンドウなんて一つしか立ち上げないしそんな話は関係ないよー」って人も多いでしょう、たぶん。しかしFirefoxの場合ちょっとややこしい挙動があって、タブをタブバー以外にドロップ&ドラッグすることで新規ウィンドウが開くという動作をします。この動作自体にあれこれ言うのは置いておいて、仮にそれで新規ウィンドウが開いてしまい、うっかり先に親ウィンドウの方を閉じてしまうと次回復元されるのはそのドロップ&ドラッグしたタブのみになってしまいます。 (誤ってタブのドロップ&ドラッグで新規ウィンドウが開いてしまった場合、ドロップ&ドラッグで親ウィンドウのタブバーにそのタブを持っていくと元に戻り、開いてしまったウィンドウは閉じられます。なおウィンドウの方をドロップ&ドラッグで親ウィンドウに持っていってもおそらく何も起きません。元に戻すにはタブの方を持っていきましょう) 閉じてしまったウィンドウのタブを復元する方法 さて、誤って閉じてしまった親ウィンドウのタブを復元する方法はあるのか?という問いですが、それはちゃんと用意されています。安心安心。Fir

[雑感] Ubuntu18.10がリリースされたそうで

早いものでUbuntu18.10がリリースされたそうです。 Download Ubuntu Desktop | Download | Ubuntu CosmicCuttlefish/ReleaseNotes - Ubuntu Wiki Ubuntu 18.10 released, but is it worth downloading? - OMG! Ubuntu! コードネームはCosmic Cuttlefishだそうで、日本語で言うと宇宙イカ? くコ:彡 くコ:彡 くコ:彡 個人的にはつい最近18.04 LTSが出たばかりのような感覚だったんですが、なんとも時が経つのが早いですね。とは言うものの自分、18.04 LTSをインストールしたのが8月になってからでまだ2ヶ月くらいしか経ってないのでまぁそんなものかと。 (過去記事 : Ubuntu 18.04.1 LTSをクリーンインストールしてみました ) 個人的には今回は18.10に上げる予定はなく、もうしばらくは18.04を使い続ける予定。 でも新しいテーマのYaruは結構気になりますね。あとSnapパッケージ周りの改善が進んでいると思うので、そっち系のソフトをばりばり使っているならメリットがあるかも。18.10はまだリリースされたばかりですし、アップグレードするならしっかりリリースノートを読んでからがいいでしょう。  そういえばWaylandは現在どんな感じなのかなと?次のLTSまでにはデフォルトになっているだろうと思うのですが、今回の18.10リリースではとりたてて話題にはなっていないのは若干進展が気になるところ。 Amazonショッピングサイト Ubuntu関連書籍など  

gnuplotのset terminalで選択出来る出力端末の種類についてのメモ

イメージ
gnuplotでは「set terminal <任意の出力端末>」でウィンドウだったりファイルだったりと出力端末を変更することが出来ます。 (もう少し詳しく言うとファイルに出力する場合はその後に「set output <出力先ファイル>」が必要) で、公式ドキュメント(version5.2のもの)のPart IV Terminal types (p204) gnuplot documentation をざーっと目を通していたんですが、数がすごく多いですね…。並びがアルファベット順なので、これだとどんな種類があるのかがちょっと(かなり?)分かり難かったです。まぁ扱いとしてはgnuplotのシステム的には全て出力端末なわけでしょう。ただ人間が扱う上では種類別に分類して整理した方が分かりやすいかと。gnuplotが出たのが1986年ということらしいので、今から数えるともう32年前。数多くの出力先を見るとその間いろんな出力に対応してきた歴史のようなものを感じるわけですが、そうは言っても現在の状況からして何を選択すればいいかはさっと分かる方が便利です。 簡単には出力先がウィンドウなのか端末なのかはたまた別の何かなのかで分類出来そうです。ということでざっと分類してみると ウィンドウを開いて表示(Qt, Wxtなど) 画像ファイル(Jpeg, Png, Pdf, Svgなど) 特定プログラムのファイル(Tgif, Dxfなど) プログラミング言語で扱える形式(Canvas, Tkcanvasなど) テキスト表現(Dumb, Caca) TeX関係(たくさん) 各種コンソール(たくさん) プリンター(たくさん) デバッグ用(Debug) ってな感じになっていました。自分、昔のシステムはさっぱり馴染みが無いのでプリンター出力と言っても何のことやら意味が分からないですが、まぁそういうものもあるんでしょう。 あと気になる点として「cairo」という語が使われているものがいくつかありました。 例 : Pngcairo、Cairolatex、Pdfcairo、Epscairo これらはcairoという2Dグラフィックライブラリ(とpangoというテキストレイアウトイブラリも)を用いていて出力しているものとのこと

空模様(2018年10月7日〜13日)を映したタイムラプス動画

イメージ
2018年10月7日〜10月13日の空模様を映したタイムラプス動画をYoutubeにアップロードしています。 天気としては全体的にやや晴れが多かった感じです。 アップロードした動画は一週間分まとめたものになっています。 以下、動画中の各日付へのリンクと天気など情報になります。 10月7日 日曜日 https://youtu.be/CSikZk-ILqw?t=9s 曇り時々晴れ 10月8日 月曜日 https://youtu.be/CSikZk-ILqw?t=2m34s 曇りのち晴れ 10月9日 火曜日 https://youtu.be/CSikZk-ILqw?t=4m59s 晴れのち曇り 10月10日 水曜日 https://youtu.be/CSikZk-ILqw?t=7m24s 晴れのち雨 10月11日 木曜日 https://youtu.be/CSikZk-ILqw?t=9m49s 曇り時々雨(霧多い) 10月12日 金曜日 https://youtu.be/CSikZk-ILqw?t=12m14s 曇りのち晴れ 10月13日 土曜日 https://youtu.be/CSikZk-ILqw?t=14m39s 晴れ時々曇り

gnuplotでアニメーショングラフを作成してみよう(Gifアニメ編)

イメージ
gnuplotでこんな風にアニメーションするグラフを作ってみたいと思いませんか?どうです? と、問いかけておいてなんですが、実のところgnuplotでアニメーションを作成する方法はいくつかあって、なかなかどれがいいとは言えないです。 (あ、ちなみに紹介したその動画は9年くらい前に私が作ったヤツです) まぁブログタイトルでネタバレしてますが、今回はGifアニメを作成する方法を紹介していきます。その他の方法についてはまた次の機会にでも。 今回の参考資料 公式ドキュメント gnuplot documentation なお、このブログ記事を書くに当たって、環境としては OSはUbuntu 18.04LTS、gnuplotはVersion 5.2 patchlevel 2を使用しています。 アニメーション作成の基本 gnuplotでのアニメーション作成で最も基礎的なのは、出力ターミナルをjpegやpngに設定してグラフプロットをひとコマずつ画像ファイルとして出力、それらをつなげてアニメーション動画にするという方法。はい、ちょっと考えるだけでめんどくさいですね。具体的に言うと、アニメーションとして秒間30コマ、それを10秒つなげるだけでも300コマのグラフが必要になります。パラメーター値を変えながら300回plotする必要があるわけです。1分間ならその6倍の1800回!おまけにパラメーター値だけでなく出力ファイル名もその都度変更が必要になります。これは気が遠くなる…、というわけでこの方法はこれ以上考えないこととします。 (しかしアニメーションを作る基礎としては大切なことなので、考えることについては損ということではないです。作る方法として時間と手間がかかり過ぎるというだけで…) アニメーション作成方法 さて話をやや差し戻しますが、gnuplotでアニメーションを作るという場合に2つのケースに分かれます。1つはいくつもの画像ファイルを作成してそれらをつなげてアニメーション動画にする場合(a)。もう1つはplotするときのウィンドウ内でアニメーションさせる場合(b)です。 (a)の場合、動画にするには出力した画像ファイルを動画編集ソフトを用いて連結する必要があります。また(b)の場合ですが、ウィンドウをそのまま画面キャプチャーソフトで

[ニュース] Firefox本体からフィード機能が切り離されるそうな

IT系のニュースを眺めていたら、Firefoxからフィード機能が切り離されるというニュースが出ていてびっくり。 FirefoxがRSSおよびAtomのサポートを打ち切り、フィード機能はアドオン経由で提供されることに - GIGAZINE Your RSS is grass: Mozilla euthanizes feed reader, Atom code in Firefox browser, claims it's old and unloved • The Register 要は各種Webサイトの更新情報をRSSなどで読み込んで、ライブブックマークで表示するという機能の切り捨てってとこでしょうか。いやいやいやいや、個人的にはライブブックマークは結構使用頻度高いんですけど。個人ブログなど更新頻度が比較的長めなサイトはfeedlyで更新情報をチェックしてるんですけど、ニュースサイトみたいに頻繁に更新されるところはライブブックマークから新規情報をチェックしてたんですよ。Firefoxにブックマークツールバーを表示させて、そこにライブブックマークのフォルダを作っていくつも放り込んでおくと簡単に確認が出来まして…。それが使えなくなるって言うと結構痛いです。若干というか結構ニュースサイトの確認方法を考え直さないとならないわけで。 なんて悩んだわけですが、ニュース記事を読むとFirefox本体からその機能が無くなるだけで、アドオンとして同様の機能のものがいくつか提供されているとのことです。というわけで取り急ぎあわてる必要は無さそうです。 かつてあったGoogle Readerが無くなってもう結構経ちますが、フィード機能を利用出来る状況が徐々に減って来ている模様。それはそれでちょっと寂しい。

[調べ中] GIMPのScript-Fuでテキストファイルに数値データを書き出す方法

イメージ
GIMPのScript-Fuで少しばかりプログラムを組めるようにはなって来たんですが、細かいところで引っかかって、調べようにもまだ調べ方がよく分かってない段階です。まぁ三日坊主の壁は越えたと思うので、やり散らかして放置するよりは前進しています。やったね👍 調べ方が分からないというのは、だいたいはScript-Fuの言語であるTinySchemeの文法やどんな関数があるのかが分かってないってのが多いです。TinyじゃないSchemeの方はドキュメントがあるんですけどね。いやそっちのSchemeの方もドキュメントのどこに何があるのかがまだ見通せていないわけですが😋 まぁ寄り道に脱線した話はさておき、タイトルにある本題 「GIMPのScript-Fuでテキストファイルに数値データを書き出す方法」 について調べた範囲の内容をまとめることにします。 まず、GIMPでScript-Fuを実行するときに変数の値を追ってみたい場合、「gimp-message」という関数が使えます。 (gimp-message "なんか文字列") 変数のような数値を書き出す場合は (gimp-message (number->string x)) と、一端文字列変換を噛まして関数にわたせばOK👌。 gimp-messageが実行されると、ダイアログに渡した文字列が表示されます。  上のスクリーンショットはScript-Fuのコンソールを開いて実行したものですが、サイドパネルにエラーコンソールを出しておくとこのようにそこに渡した文字列が表示されます。場合に寄ってはGIMPのウィンドウの一番下のラインにひっそり表示されたり、ダイアログウィンドウが開いたりするみたいです。 ただこのgimp-messageを使ってもこんなようにダイアログに表示されるだけなので、その出力をテキストファイルに落とそうとすると違った方法を取らなければなりません、たぶん。 (ダイアログからコピペしてテキストファイルに貼り付けるとかいう力技は、数百、数千という出力に対しては無力なので却下です🙅。エラーコンソールのテキストファイルアウトプットを使えば少しマシですが、こっちも余計な文字が入るので却下🙅) で少し調べていたのですが、どうやら「open-o

PIL(Pillow)による画像ファイルからの統計情報取得、処理時間が短くできました

イメージ
さて、一番始めはヒストグラムを得る方法と言いつつ、いまになっては統計情報の方を得るのが目的となっているわけですが、画像処理ライブラリのPILを使ってプログラミングを作るところまで進みました。 ここに至るまでの経緯は以下のブログ記事に書いています。 [メモ] 画像ファイルのヒストグラムを得る方法について思考中 PIL(Python Imaging Library)ってのを使おうと思ったんですけども ImageMagickのidentifyで得られる情報と、PIL(Pillow)のPIL.ImageStatで得られる情報は同じものというわけでは無いようです。そのへんは数値的に画像を処理すれば同じデータが得られると思いますが、目的としてはまったく同一のデータを得ることではないので割愛。とりあえずmeanの値だけ得られればいいかなと。 さてPILを使って同様なデータが得られるようになったといっても、identifyをシェルスクリプトで回した時よりも処理時間が短くなければ作った意味が勉強目的くらいにしかなりません。ということで両者で処理時間比較を行ってみることに。 ただ条件としてidentifyとPIL.ImageStatで得られる情報が異なるので比較といっても参考程度ということで。 扱うファイルはいつもタイムラプス動画で撮影している画像ファイルで、ファイル数は4345個。条件をなるべく近づけるために、PILの方も出力項目をidentifyと同じ5つに合わせました(ただ項目自体が違っているのは前述の通り)。 始めに言っておくと、identifyのシェルスクリプトというのは以下のようないくつもコマンドをパイプでつなげたものを全ファイル数に対して行う形式のため、始める前から処理時間かかりそうと思えます。始める前から勝負は見えているような気がしますが、まぁやってみましょう。 identify -verbose webcam-20181010-025515.jpg | grep 'Image statistics' -A 8 | tail +5| awk -F: '{print $2} ' | awk '{print $1}' | sed -z 's/\n/, /g' | awk 

PIL(Python Imaging Library)ってのを使おうと思ったんですけども

先日書いたブログ記事 [メモ] 画像ファイルのヒストグラムを得る方法について思考中 で画像ファイルのヒストグラムというか統計情報を得るために、何らかの画像処理ライブラリを使ってプログラミングするのがいいのでは?という考えに至ったわけです。 で、自分これまで画像処理ライブラリ自体使ったことが無かったので情報収集から始めたました。とりあえず自分が使いやすいPythonについて調べたらPILというのが見つかりました。PILはPython Imaging Libraryの略だそうな。 Pillow: the friendly PIL fork About — Pillow (PIL Fork) 5.3.0 documentation   Python Imaging Library - Wikipedia 現在は元のPILからフォークされたPillowというのが広く使われているようです。こっちのPillowの方でもPILという語がよく使われていますが、元のPILの方は2011年で開発が止まっているようなので、PILという語が出てきたら基本Pillowのことを指していると考えればいいのかなと思います、たぶん。 で、Pillowのインストール方法ですが、公式ドキュメントではpipでインストールする方法が挙げられています。なんですが、Ubuntu18.04LTSの場合、デフォルトでインストールされているPythonパッケージの中に「python3-pil」っていうのがあります。 (うちの環境では気が付いたらインストールされていたのでデフォルトでインストールされたと思っているのですが、もしかしたら違うかもです) この「python3-pil」がPillowのパッケージなので、Ubuntu18.04LTSではpipでインストールするまでもなく使える環境自体は整っていることになります。 (あくまでデフォルトでインストールされている前提での話) あ、python3-pilとpipでインストール出来るPillowが同一のものかまでは確認して無いです。両者ともソースを取得して比較すれば確認は出来るでしょう。 あとpipでインストール出来る方がバージョンは新しい模様。 さて、Pillowがデフォルトでインストールされていることに気が付かずに、venv

空模様(2018年9月30日〜10月6日)を映したタイムラプス動画

イメージ
2018年9月30日〜10月6日の空模様を映したタイムラプス動画をYoutubeにアップロードしています。 天気としては台風が2つ(24、25号)通過や接近したりと荒模様でしたが、全体的にやや晴れが多かった感じです。 アップロードした動画は一週間分まとめたものになっています。 以下、動画中の各日付へのリンクと天気、その他ニュースなど情報になります。 9月30日 日曜日 https://youtu.be/GyDi8ux53HM?t=9s 曇りのち雨 台風24号、和歌山県付近上陸(午後8時ごろ) 10月1日 月曜日 https://youtu.be/GyDi8ux53HM?t=2m34s 晴れ時々曇り 台風一過 10月2日 火曜日 https://youtu.be/GyDi8ux53HM?t=4m59s おおむね晴れ 10月3日 水曜日 https://youtu.be/GyDi8ux53HM?t=7m24s 曇り時々晴れ 10月4日 木曜日 https://youtu.be/GyDi8ux53HM?t=9m49s おおむね曇り 10月5日 金曜日 https://youtu.be/GyDi8ux53HM?t=12m14s 曇り時々晴れ 台風25号、接近中 10月6日 土曜日 https://youtu.be/GyDi8ux53HM?t=14m39s 晴れ時々曇り 台風25号、接近中

[メモ] 画像ファイルのヒストグラムを得る方法について思考中

イメージ
ちょっと画像ファイルの統計情報であるヒストグラムを得ようといろいろ調べ中。 得たいヒストグラムが一つだけならGIMPでもImageMagickでもいいのだけど、いくつも画像ファイルがある場合にヒストグラム取得の自動化を行ないたい。 例えば以下の画像ファイル これをGIMPでヒストグラム作成するとこんな感じになる。 簡単にいうと暗い色から明るい色にかけての分布が分かる。ただ今回欲しいのはグラフの方ではない。じゃあ何かと言えば現段階で何かの素材に使えそうと思ってにらんでいるのが、そのヒストグラムの下にある「Mean」だの「Std dev」だのという統計情報の方。 (そういや単色のピクセル数の入手もしたいなとも思ってるけど、それは別の話) コマンドラインからではImageMagickのツールであるidentifyに-verboseオプションを指定すると統計情報が取得出来る。 $ identify -verbose test.jpg ここから得たい結果だけ抜き出すのがちと手間かもだけど、grepコマンドを組み合わせればいいかなと。 ImageMagickではその他にconvertコマンドを用いる方法もあるみたいだけど、これはちょっと自分が得たい情報とは違う。 File Handling #histogram -- IM v6 Examples 変わったところとしてはffmpegで動画をヒストグラムに変換するというもの。ただこれは結果が動画として描画されるため、データ数値の入手には向いていないと思われる。 FFmpeg Filters Documentation #histogram $ ffplay -vf histogram test.mp4 一応、GIMPのscript-fuで取得する方法も途中までは作ったのだけど、シェルスクリプトだけで済みそうなidentifyの方が楽かなぁと現在思考中。 追記 2018年10月11日 とりあえずシェルスクリプトで取得しようとするとこんな感じ。 $ identify -verbose test.jpg | grep 'Image statistics' -A 8  | tail +5| awk -F: '{print $2}'

[メモ] GIMPでscript-fuを使ってバッチ処理をしようとしたときのアレコレ

イメージ
単にメモ書きとして残しておくだけなので、このブログ記事は文章としてまとまりがないです。そのうちちゃんとまとめるかも? 画像ファイルが100個あって、この全てに同様の画像処理を行うこととします。 いわゆるバッチ処理(一括処理)と呼ばれる操作を行うわけです。 バッチ処理をするわけなので、ディレクトリ内のファイルをGIMP側へ渡す必要があります。GIMPのバッチモードではコマンドラインからいくつか引数を渡すことが出来るので、これを用います。 で、ディレクトリ内のファイルをまとめて扱えるgimpプラグインとして「file-glob」というのがあるので、これを用います。 で、全てのファイルに同じ処理をするにはこれで特に問題なかったわけです。 その次に、連番のファイル名になっているファイルに1つずつ操作の変数が異なる処理をやろうとしたら、なかなかうまくいってくれない…。 何がうまくいかないかというと、どうやらfile-globというプラグインで連番のファイルを読み込ませても、処理される順番は連番ではなくバラバラに実行されるようだということ。 簡単に説明すると、 1.jpg, 2.jpg, 3.jpg, 4.jpg, 5.jpg の5つのファイルに対し a処理, b処理, c処理, d処理, e処理 の処理をそれぞれ適用しようとしています。想定では 1-a.jpg, 2-b.jpg, 3-c.jpg, 4-d.jpg, 5-e.jpg (ファイル名-処理名.拡張子という記述) となってくれるものと思ってました。 ただ、バラバラに処理が実行されるため 3-a.jpg, 1-b.jpg, 5-c.jpg, 4-d.jpg, 2-e.jpg みたいなファイルが出来上がってしまうという始末。 これはイケマセン。まぁfile-globというプラグインではファイル名のリスト作成が行われているようなので、単にリスト内の並びを連番でソートしてしまえばよさそうです。 ただ困ったことにscript-fuというか言語であるtinyschemeでどうやってソートすればいいかが分からず…。ソート関数があれば一発で解決出来そうなのですがいまのところこれといった情報が見つからない…。無いなら無いで、ソートアルゴリズムでソート処理を組んでいけばいいのでしょう

空模様(2018年9月23日〜29日)を映したタイムラプス動画

イメージ
先週(2018年9月23日〜29日)の空模様を映したタイムラプス動画をYoutubeにアップロードしました。 天気としては全体的にやや雨が多かった印象。 アップロードした動画は一週間分まとめたものになっています。 以下、動画中の各日付へのリンクと天気、その他ニュースなど情報になります。 9月23日 日曜日 https://youtu.be/893jpRppfXk?t=9s 晴れのち曇り 9月24日 月曜日 https://youtu.be/893jpRppfXk?t=2m34s 曇り時々晴れ 9月25日 火曜日 https://youtu.be/893jpRppfXk?t=4m59s おおむね雨(霧多い) 9月26日 水曜日 https://youtu.be/893jpRppfXk?t=7m24s 曇り時々晴れ 富士山、初冠雪 9月27日 木曜日 https://youtu.be/893jpRppfXk?t=9m49s 雨のち晴れ 9月28日 金曜日 https://youtu.be/893jpRppfXk?t=12m14s おおむね晴れ 9月29日 土曜日 https://youtu.be/893jpRppfXk?t=14m39s おおむね雨 台風24号、沖縄、奄美地方接近

GIMPのScript-Fuについての基本的な部分の雑感

イメージ
最近GIMPのScript-Fuでスクリプト書いたりしてるんですが、なかなか理解するのに苦労してるのでちょっとここいらで一端まとめとして雑感を記しておこうと思います。 まず、なんでGIMPのScript-Fuを使おうと思ったのかと言うと、とある一連の処理を自動化してしまおうとしたからになります。 ただ画像処理の自動化ならImageMagickのコマンドをシェルスクリプトでこねくり回した方が楽ちん。まぁこれはLinux環境でシェルスクリプトを手軽に使えるからってのもありますが。 今回はGIMP特有もしくは得意な機能を絡めた自動化をしたかったので、Script-Fuを選択しました。ちなみにGIMPにはScript-Fuの他にPython-Fuというのでもスクリプト処理を組むことが出来ます。ただこのPython-Fuで使われるPythonはバージョンが2.7なので、そこをどう見るかはちょっと考えたいところ(将来的にはPython3になると思いますが)。 さてScript-Fuですが、こちらにはTinySchemeというプログラミング言語が用いられています( TinyScheme - Wikipedia )。 TinySchemeとはなんぞや?というと、Schemeというプログラミング言語の軽量版(簡易版?)に当たるようです。ではそのScheme( Scheme - Wikipedia )とはなんぞや?となると、これはLisp( LISP - Wikipedia )という言語の方言だそうな。プログラミング言語で方言と言われてもよく分かりませんが(いや、Wikipediaにそう書いてあったので…)、まぁ言語自体は同じようなもので処理を書く時の書式がちょっと違うとかそんなものでしょう、たぶん。 LispといえばテキストエディタのEmacsでもEmacs Lisp( Emacs Lisp - Wikipedia )というのが使われています。個人的にはこれまでEmacsを使ってきたのですが、あまりEmacs Lispに関しては触れずに過ごしてきました。というわけで(どういうわけ?)、Script-Fuを学ぶことはSchemeを学ぶこと、すなわち必然的にLispにも詳しくなれてEmacsを使う幅も広がっていくに違いない、という思惑も絡んで今回はScript-Fuを使

スポンサーリンク