投稿

8月, 2022の投稿を表示しています

next.js: チュートリアルからの覚書(基本的な利用方法、CSS設定、ルーティングなど)

チュートリアル をせっかくクリアしても、習ったそばから忘れてしまうのでメモ書き。チュートリアルを網羅しているわけではなく、自分が使う内容だけ抜き出している点に注意。 環境: Next.js 12.2.5

node: Ubuntu20.04(Linux)でnode.jsの最新版をインストールする方法

Ubuntu (Linux) 上で Node.js をインストールする方法について。Ubuntuなどのパッケージシステムを利用して Node.js を入れようとすると非常に古いバージョンのものを利用することになってしまう。 これを回避し、簡単に最新版を入れる方法について。

web: Next.jsやNuxt.js がなぜ静的サイトの作成に使われるのか?

イメージ
C++とかそういった所謂レガシー言語ばっかり触ってきた人が静的Webサイトを作ろうとして Next.js / Nuxt.js の存在にぶつかった。 なぜ静的サイト作成にWebアプリで利用するようなJavaScriptフレームワークが?

python: pythonスクリプトから実行ファイルを作る、あるいはDLLに作る方法 (nuitka)

Pythonから実行形式のファイル、あるいはDLL 1 や .so などの動的リンクライブラリを nuitka を用いて作成する方法について。 Pythonスクリプトの隠蔽を目的とする場合は暗号化が必要であると思うが、その場合商用ライセンスが必要となる点に注意。 環境は Python 3.9.5 on Windows 10

windows: "shell:" という接頭辞の役割について

スタートアップフォルダを開く際 などに利用される shell: という接頭辞について、その役割を解説します。

windows: スタートアップフォルダを開く方法

イメージ
Windowsが起動すると同時にプログラムを実行した場合に利用できる、スタートアップフォルダを表示する方法について。

gnuplot: 2軸プロット、2つの異なるY軸と共通のX軸を持つグラフを作成する

イメージ
共通のX軸を持ち、異なるY軸を持つようなグラフを描画する方法。例えば以下のようなグラフを作成する方法。

gnuplot: 日付あるいは日付時刻を解釈してもらう方法

方法 説明 時系列のデータの場合、日付あるいは日付と時刻がインデックスとして付与されているデータが存在する場合がある。そのようなデータをPlotする方法について。 方法 set timefmt によってデータに格納されている日付時刻のデータ形式を指定する。以下のコードは 2022-08-01 などといったタイプの日付の場合。時刻を含むデータも対応できる。 そのあと、X, Yの日付時刻データを使う軸を指定し、 time 形式のデータをPlotすると伝える。大抵の場合X軸。 set timefmt "%Y-%m-%d" set xdata time 説明 よく見かける日付時刻フォーマット文字列の形式でデータの読み出し方法を指定することによりGnuplotでも日付時刻を扱うことができる。 時刻を利用する場合には % の後に続く文字列が変わる程度で、基本的には同じ。詳しくは下記のマニュアルを参照のこと。 あるいは、gnuplot上で help timefmt とやることで見ることもできる。 参考サイト: http://gnuplot.sourceforge.net/docs_4.2/node274.html

gnuplot; 面倒な設定をデフォルトでやってくれるようにするgnuplotrc (初期設定ファイル)

方法 説明 Gnuplotで毎回実施して起きた設定がある場合、 gnuplotrc というファイルを用いると楽。 方法 gnuplotrc の置き場所を探す。 show loadpath Windowsで例えば以下のような表示が出る。 gnuplotrc は share というフォルダにある、つまり "C:\Program Files\gnuplot\share" に存在している。 loadpath is loadpath from GNUPLOT_LIB is "C:\Program Files\gnuplot\demo" "C:\Program Files\gnuplot\demo\games" "C:\Program Files\gnuplot\share" gnuplotrc is read from share 該当のディレクトリにう移動し、 gnuplotrc ファイルを弄る。中にはGnuplotで実行可能なコマンドを記述することができる。 説明 gnuplotrc は Bashにおける .bashrc のような、初期設定を記述できるファイル。 ほとんどの場合CSVデータを読み出す、という場合には CSVデータを読み出す設定 を記述したり、よく使う日付文字列形式があれば datefmt をこの中に記述してもよさそう。 マニュアルによれば、UNIXでは .gnuplot というファイル名で、Windowsでは GNUPLOT.INI というファイル名らしい。しかし上記の通り私のWindows環境では gnuplotrc というファイル名になっているようだ。インストール方式により異なる可能性がある。 参考サイト(HTMLがなさそうだったのでPDF): http://www.gnuplot.info/docs_5.4/gnuplot-ja.pdf

gnuplot: 最初の1行を飛ばして読み出す方法

方法 説明 CSVファイルなどでよくある、先頭行にヘッダが記述されたデータを読みだしてPlotする方法について説明。 方法 every ::1 を利用する。 plot "data.dat" every ::1 using 1:2 説明 Gnuplotにはデータを間引いてPlotする機能があり、それを利用している。 every ::1 で行われているのは「1番目の行から読みだしてください」という命令だ。Gnuplotで読みだすデータセットはC言語の配列のように0番目から始まるため、1番目の行=2行目ということになる。 この every は下記のマニュアルを見てもらえるとわかるが、結構細かい指定が可能。ここでは割愛する。 参考サイト: http://gnuplot.sourceforge.net/docs_4.2/node121.html

gnuplot: CSV, TSVデータを読み出す方法

方法 説明 方法 CSVの場合 set datafile separator "," TSVの場合 set datafile separator "\t" 説明 set datafile separator はその名の通りプロット対象のデータファイルのセパレータ、つまり区切り文字を指定するコマンドである。 Gnuplotではデフォルトのセパレータは空白文字(スペース)であるが、何かのデータを取ってくるとCSV形式になっていることが多いため、利用頻度が高め。 デフォルトでCSV形式を読み込ませるようにしたい場合には gnuplotrc を利用するのが良いと思われる。 参考サイト: http://gnuplot.sourceforge.net/docs_4.2/node173.html

opencv: OpenCV's imshow() suddenly stops updating a content inside the named window

Symptoms Environment Solution Reason Symptoms A simple program which consists of two threads: a thread to check console input (like an interactive shell) and a thread to constantly update the image inside the specific named window by keep grabbing image from the device and calling imshow() . It worked for some frames (maybe 10 or so), but stops updating suddenly without any notification, warning or error logs. It seems imshow() and other process seem working. Environment Ubuntu 18.04LTS OpenCV 4.4 Solution Put startWindowThread() before starting threads. Reason The official documentation does not provide any information about startWindowThread() , though it plays a very important role especially in GTK environment .

ruby: Ruby on Rails逆引きコマンド集

開発環境操作 rake で利用するタスクを生成したい 現在のenvironmentを確認する テスト用サーバを外部公開したい アプリケーションのタイムゾーンを設定する アプリケーションのロケールを日本語にしたい / 日本語を利用する方法 UbuntuでバックエンドとしてPostgresを使うようにしたい モデル操作関連 ActiveRecord(データ)を検索したい ActiveRecord(データ)を範囲検索したい / 絞り込みたい ActiveRecordの並び替えをしたい CSVからデータベースにRecordを格納したい development, production, test などの切り替え View関連 CSSファイルを外部から読み出す設定の方法 Paginationしたい / 数が多いので分割して表示したい 番外編: Kaminariを使うと変なスペースが導入される DateTime を任意の文字列形式で表示したい 現在のroutes を一覧表示 お問い合わせフォームを作成したい 確認バージョン: Rails: 7.0.3.1 Ruby: ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) 開発環境操作 rake で利用するタスクを生成したい bin/rails g task < namespace > < task_name > 例えば bin/rails g task test_job test_task ./lib/tasks の下に test_job.rake が作成されている。 それ以降は Ruby on Rails での rake タスク作成 の記事参照。 現在のenvironmentを確認する 以下のコマンドによって確認可能。 rails r "puts Rails.env" テスト用サーバを外部公開したい リモートで開発している際などで、 bin/rails s で puma を利用して稼働させたデバッグレベルのサーバを外から確認する必要があるとき。バインドするアドレスを変更する。 bin/rails s -b 0.0.0.0 ポ

雑記: ドメイン更新料の話

ドメイン更新料金と取得料金は別 ドメイン取得 ドメイン更新 何が言いたいか ドメイン更新料金と取得料金は別 今までまともにサイトを運用してこなかったので気づかなかったのだが、ドメイン払い出しのビジネスはジレットモデルのような仕組みになっているらしい。 ドメインの払い出しサイト側に支払いが生じるのは以下のタイミングで、2の料金が割高な場合がある。2の料金をはじめから気にしている人は問題ないのだが、初めてだとあまり気にしなそうなので注意喚起的な。。 ドメイン取得料金 ドメイン更新料金 ドメイン取得 1.のタイミングで、どんなドメインにしようか検討して購入する。この時にはドメインの取得に関する料金のみが表示されているので更新料金は気にしない人が多いだろう。 ドメインを探す際に、適当な文字列を打ち込むと、TLD(Top Level Domain, .com とか .net とかアドレスの最後につくやつ)を変えながら色々なドメインを提示してくる。 例えば、 example という文字列を打つと (価格は適当ですが) 大体こんな感じの提示をしてくる。 ドメイン名 取得価格 example .com 980円 example .net 1円 example .jp 300円 example .site 1円 example .shop 1円 .com , .net , .jp とかの有名なTLDは埋まっていることがある。その場合、もうちょっとドメインを長くするなどで空いているドメインを見つけることもできるが、あんまり変な名前にはしたくないもの。こういった場合、「これ以上もじったりして変なドメインにしても使いづらいしなぁ。それにいつまで続けるかもわからないし .site とかでいいか」と思って下の方のよくわからないTLD( sTLD というらしい)を買ってしまいがちだ(実話) この時ドメイン更新料がいくらかかるなどの情報は明示されない。 ドメイン更新 そして、購入時には大体の人がおそらく1年の契約で取得しているので1年経った頃に更新のお知らせが届く。 その料金は以下の通り。 (お名前.comの ドメイン更新価格料金表 を参考) ドメイン名 更新価格

雑記: Apple Watchを持っていないのにApple Watchを復旧という画面が出てくる

イメージ
症状 調査 対処法? (謎) 追記 症状 表題の通りで、Apple Watchを持っていないのにも関わらずApple Watchを復旧するメッセージが表示される。 利用機種は iPhone 12 で、 iOS 15.5 。 Webで調べてみたところ、何にも引っかからない。検索のサジェストには「Apple Watchを復旧 持っていない」という自分と同じ症状らしき検索が出てくるところを見ると、割と同じ症状の人は存在しているように思う。 検索で唯一ひかっかったのが Yahoo知恵袋の質問 。私の症状もこれと同じである。下記の参考が画像の通り。これが急に現れる。 調査 この機能自体は iOS15.4 から導入された Apple Watchを復旧させる機能 であるらしい。こちらのサイトから見た限り、手順があるようだ。 Apple Watchを充電器に接続します(Apple Watchが充電されるようにします)。 iPhoneをApple Watchのそばに置きます。 次に、Apple WatchのDigital Crownのすぐ下にある サイド ボタンをダブルクリックします。 iPhoneに**「Apple Watchを復旧。このAppleWatchに問題があります。アップデートまたは復旧が必要です」**というポップアップが表示されます。 上記の通り、問題のメッセージが表示されるためには Apple Watch 側での操作が必要であるようだ。 初めは何かしらの電子機器の通信がApple Watchとして解釈されてこうなっているのかな、と思ったのだが上記の手順が存在するのを考えるとそんな単純なことでもなさそう? 英語で検索してみると、日本語よりはヒットするが、それでも3件程度しか見当たらない。 https://discussions.apple.com/thread/254004559 https://www.reddit.com/r/applehelp/comments/uilxto/my_iphone_keeps_spamming_a_recover_apple_watch/ https://discussions.apple.com/thread/253878819 対処法? (謎) 上記のリンクの3つ目

ruby: Ruby on Rails でrake taskを作成する

イメージ
Ruby on Rails において ruby の rake を利用する方法についてを記載しておりましたこちらの記事は下記に移転しました。 お手数ですが下記をご確認ください。 Ruby on Rails で利用できる rake task 作成方法

bash: Ubuntu20.04 でSSH接続時にターミナルの色が表示されなくなった

症状 解決方法 原因 症状 今までは ssh でマシンに接続した際にカラー表示がされていたのに、ある時からカラー表示がされなくなってしまった。 しかし、 source ~/.bashrc と実行することでカラーを有効化できる。そんな状態。 解決方法 私の場合は、 ~/.bash_profile というファイルを作成してしまったことが原因のようだった。 そのため、 ~/.bash_profile に記述されている内容をすべて ~/.profile に移し、 ~/.bash_profile は削除した。これにより解決した。 cat ~/.bash_profile >> ~/.profile rm ~/.bash_profile 原因 pyenv を入れた際に、インストールガイドに沿って ~/.bash_profile と ~/.bashrc の両方にコマンドを書いたのだが、それが良くなかった。 Ubuntuではもともと ~/.bash_profile というファイルは利用しておらず、代わりに ~/.profile というファイルが利用されているようだ。しかし、自分で ~/.bash_profile というファイルを作成してしまうと、Ubuntuが ~/.profile を読みださずに代わりに ~/.bash_profile を読みだす動作になってしまうようだ。 一応、 ~/.profile の中に注意書きがある。 # ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. そして、このファイルが読みだされなくなることで何が起きるかというと、以下の部分が実行されなくなる。 # if running bash if [ -n " $BASH_VERSION " ] ; then # include .bashrc if it exists if [ -f " $HOME /.ba

ruby: rbenvのインストール方法と使い方 for Ubuntu

イメージ
インストール リポジトリのクローン PATHの設定 注意事項 初期設定 シェル再起動 チェックを実施 ruby-build のインストール rbenv を利用して ruby を入れよう 超簡易的コマンドリファレンス Ubuntuでの rbenv のインストール方法と使い方について。 rbenv は Pythonで言うところの pyenv と同じような機能を提供している。つまり、 ruby のバージョン管理を行うことができる。 実行環境は Ubuntu 20.04。 インストール インストールは通常のアプリケーションと同じく apt によっても可能なのだが、公式リポジトリで “out of date” とか書いているのであんまり推奨していないのかもしれない。 なのでここでは git リポジトリからインストールする方法を記載する。 リポジトリのクローン まずクローン。 git がない場合には sudo apt install git で入れる。 git clone https://github.com/rbenv/rbenv.git ~/.rbenv 以下のコマンドはbash向け拡張機能であり必須ではないが、あった方がよさそうなのでやっておく cd ~/.rbenv && src/configure && make -C src PATHの設定 PATHを設定する。 Ubuntuであれば bash を利用していると思うので、以下を設定する。 UbuntuをGUIから利用している場合には最後の ~/.bash_profile を ~/.bashrc にするようだ。 echo 'export PATH=" $HOME /.rbenv/bin: $PATH "' >> ~/.bash_profile 注意事項 公式手順通りに、上記の通り ~/.bash_profile に書き込んでみたのだが、SSH接続した際にターミナルに色がつかなくなってしまった。 調べてみたところ、Ubuntuは .bash_profile の代わりに .profile を準備しており、そちらを読むようになってい

css: ブラウザで表示されるスクロールバーを丸みのついたいい感じのデザインにしたい

イメージ
モチベーション ブラウザに表示されるスクロールバーの見た目変更方法 ちなみに モチベーション Windowsだと、ChromeなどのWebブラウザにおいてデフォルトで表示されるスクロールバーの見た目があまりよろしくないので、変更したい。 Windowsだとなぜかデフォルトのスクロールバーがとてつもなくレガシーな見た目をしているので、現代的な形にアレンジしたかった。 ブラウザに表示されるスクロールバーの見た目変更方法 CSSファイルに ::-webkit-scrollbar や ::-webkit-scrollbar-thumb といった記述を入れることでスクロールバーの見た目を変更することができます。 注: 本設定は Webkit をベースとしたブラウザでのみ有効です。大抵のブラウザは対応しているようですが、Firefoxなど一部は対応していないようです。 /* スクロールバーの幅や高さを狭くしています */ ::-webkit-scrollbar { width : 10 px ; height : 10 px ; } /* スクロールバーのつまみの色変更、および角を丸くしています。 */ ::-webkit-scrollbar-thumb { background : lightgrey ; border-radius : 5 px ; } 上記設定でこんな見た目になります。 スクロールバーの背景色も消えてしまう(というより背景色と同色になる?)ので、そこを復活させたい場合は ::-webkit-scrollbar-track により色を指定します。 /* スクロールバーが通る場所を色付け */ ::-webkit-scrollbar-track { background : aliceblue ; } ちなみに CSSで指定する際に body とかをつけてあげないと、ページ全体のスクロールバーのスタイルにも影響してしまします。 影響範囲を限定したい場合には、 body ::-webkit-scrollbar { width : 10 px ; height : 10 px ; } body ::-webkit-scro

css: 横長なコンテンツにスクロールバーを表示したい

モチベーション 方法 overflow: auto で横長なコンテンツにスクロールバーを表示する overflow: scroll で常にスクロールバーを表示する 横方向か縦方向どちらかにのみスクロールバーを表示したい モチベーション 例えばこのブログでもそうなのだが、コードの断片を貼り付けているページがいくつかある。そういった個所は得てして横長になりがち。 単なるコードであれば横幅を短く書けばいいじゃないか、ということもあるが、そのまま描いた方が都合がよい場合も多くある。また、コマンドライン上で実行する ワンライナー なんかは都合上1行で書いてやりたい気持ちもある。 そういった横長なコンテンツに対してスクロールバーを表示したいという話です。 方法 overflow: auto で横長なコンテンツにスクロールバーを表示する 例えば <code> という要素に対してこれを実施したい場合。 code { overflow : auto ; } これにより、要素の横幅を超えてしまうような場合にのみスクロールバーが表示される。ちょうどこのサイトのように。 This is a test.This is a test.This is a test.This is a test.This is a test.This is a test.This is a test.This is a test. overflow: scroll で常にスクロールバーを表示する 例えば <code> という要素に対してこれを実施したい場合。あんまり常に表示したいということはなさそうですが、デザインをそろえたいなどで利用されることがあるかもしれません。 code { overflow : scroll ; } 横方向か縦方向どちらかにのみスクロールバーを表示したい overflow ではなく、 overflow-x を指定すれば横方向のみ、 overflow-y を指定すれば縦方向のみについてスクロールバー表示を設定できます。 overflow-x / overflow-y の後に指定する内容は overflow の時と同じです。 code { /* 横方向のみ *

python: pyenvを導入して特定のバージョンのPythonを動かせるようにする for Ubuntu

イメージ
この記事について pyenv 導入方法 ダウンロード PATH 設定 シェルの再起動 確認 pyenv を利用して python のインストール 事前準備 インストール可能なバージョンを表示する pyenv を利用して python をインストール インストール済で 利用可能な python バージョンを一覧表示 pyenv で現在のログインユーザが使うデフォルト python のバージョンを指定する pyenv で特定のディレクトリでのみデフォルト python のバージョンを指定する pyenv を利用してインストールした python をアンインストール おわりに この記事について 本記事では、マシン上で任意のバージョンが実行できるようになる pyenv のインストールから簡易的な利用方法まで記載していきます。 Pythonに限らず、プログラミング言語はバージョンに依存して新機能が導入されたり、 特定の機能が廃止方向に進んでwarningが表示されるようになってしまったり、といった事象がつきもの。そこで、どんな環境でも特定のバージョンでプログラムを動かすようにできれば、こういった悩みから解放されるはず。 こういった機能は「仮想環境 (virtual environment)」と呼ばれる機能で提供されることが多いです。仮想環境自体は実行環境のバージョンや付随するもろもろのライブラリのバージョンまでまとめて管理するものを指しますが、ここではその実行環境のバージョンを固定する方法を解説しています。 Ubuntu 20.04 で確認。 pyenv は Rubyで同様のことを実施できる rbenv からのforkで作成されたようです。 関連記事: rbenvのインストール方法 pyenv 導入方法 ダウンロード 公式リポジトリ に書いてある通りに実施すればOK。かいつまんで書くと、 git clone https://github.com/pyenv/pyenv.git ~/.pyenv # 以下はBash向け拡張機能のコンパイルなので必須ではない。 cd ~/.pyenv && src/configure && make -C src 上記で p

git: Gitでやらかしてしまったとき、1つコミットを戻したいとき

イメージ
以下の人向けです。 git commit の際に 誤って無駄なファイルなどを入れてしまった 誤って無駄な修正を入れたままにしてしまった git push はまだ実施していない こちらの内容は下記に移行しました。 gitでまだPushしていないcommitをundoする方法

git: Gitを入れたら設定しておきたい内容

イメージ
gitを入れたばかりでは設定がきちんと行われておらず、 git をちゃんと使おうとしたときに困ってしまったりするので、最初に設定をしてしまおう。 ちなみに、以下のコマンドの後に毎度出てくる --global はリポジトリの設定ではなく、このユーザ全体の設定を実施します、という意味です。 まずはprofile 自分のメールアドレス、名前を必ず聞かれるので先手を打って設定しておく。 git config --global user.email "mail.address@example.com" git config --global user.name "Tarou Tanaka" 名前は Family → Last でも Last → Family でもどっちでもよいですが、Last → Family にしておいた方が外国でなじむかもしれません。 ちなみに、特定のリポジトリでのみ別名を使いたい場合には、そのリポジトリに移動して --global を消した状態で設定を行うことで対応できます。 git config user.email "yamada.tarou@example.com" git config user.name "Tarou Yamada" コミットメッセージを書くときに使うエディター デフォルトだと nano にされていたりするので、お好きなエディタに変更しましょう。 Emacsを利用する人は vim を emacs に置き換えてください。 git config --global core.editor vim 試したことはないですが、たぶんGUIのエディタを指定しても行けるとは思います。 パスワードのキャッシュを設定 認証が必要なリポジトリに対してアクセスする場合、毎度パスワードを聞かれるのは大変だったりします。と言ってもここはセキュリティに関する設定なので、危ないと思う方は設定しないでください。例えばよくオープンなスペースで仕事される方など。 以下の例では 3600秒 = 1時間のあいだキャッシュされる設定にしています。したがって、一度パスワードを打ち込んだあと、1時間以内にgitコマンドを利用しておけば再

gnuplot: ヒストグラムを作成する方法

イメージ
ヒストグラム(histogram)の作成は意外と面倒な場合が多いです。binのサイズやbinがいくつ存在するかなどから計算を実施して表示する必要があるためです。 gnuplotでは using の中で計算が実施できるというところを利用して、ヒストグラムを描画することができます。 どうすればいいか min , max , n やデータファイルの名称は適宜変更してください。 min = -5.0 # 左端 (ヒストグラムの最小値、最小binの左端) max = 5.0 # 右端 (ヒストグラムの最大値、最大binの右端) n = 20 # binをいくつにするか # 上述の値からbin幅を計算 width = (max- min)/n # 与えられた値がどのbinに属するかを計算する関数を定義 bin(x) = width*(floor((x - min)/width)+0.5) + min plot 'data.dat' using (bin($1)):(1.0) smooth frequency with boxes 説明 width まではそのまま代入と計算を実施しています。 bin(x) は若干複雑に見えますが、与えられた x が属するbinの中央の値を計算しており、ここで値がbinに丸め込まれています。 floor は切り捨てをする関数です。binが真ん中に来るように計算をしているため、 +0.5 という計算が入り込んでいます。 例えば 0 => x > 0.5 であれば 0.25 というような計算結果になります。 次に、最後の plot のあたりで実施している内容についてです。 gnuplotでは $1 や $2 などを利用して、データセットの各データを参照することができます。 $1 であれば1列目の各データ、 $2 であれば2列目の各データ … というように。 これにより、 using の後に来ている bin($1) ではデータセットの1列目の各行の値を bin(x) 関数に入れて計算していることになります。 また、 using においてカッコ () を用いることにより using の後の値は plot に利用するカラムの番号ではなく、実際にplotす

python: ログを出力・記録するためのクラスであるloggingの使い方

イメージ
Pythonで簡易的なスクリプトを作成していると、 print でなんでも済ませてしまいがちだが、後から何かしらにモジュール化して組み込むことや、スクリプトのままだとしても不要なログは消すなどの対応が後からとれるようにしたい。その時に利用できるのが logging モジュール。 logging の基本的な使い方 logging は利用を開始する前に basicConfig を利用して設定を行ってあげる必要がある。そのあと、 logging.info などレベルに応じた関数を呼び出してログを書き出す。例えば以下のような形。 import sys import logging logging . basicConfig ( level = logging . INFO , format = "%(asctime)s [%(levelname)s] %(message)s" , handlers = [ logging . FileHandler ( "test.log" ) , logging . StreamHandler ( sys . stdout ) ] ) # 呼び出す関数によってログのレベル(深刻度)設定が変わる logging . info ( "This is a sample of INFO log" ) logging . warning ( "This is a sample of WARNING log" ) logging . critical ( "This is a sample of CRITICAL log" ) ここでの設定値は以下。 level でどのレベル以上のログを出力対象とするか設定している。ここでは INFO 以上のログを出力する設定。 format でログの出力形式を設定。後述。 handlers でログをどこに出力するかを指定。ここでは debug.log というファイルと stdout すなわちコンソールの標準出力を指定している。 level について logging で利用される level は以下の通り。上から強い

gnuplot: スクリプトに引数を渡したい

イメージ
gnuplot では、スクリプトを読み出す機能があります。 gnuplot -c <filename> この機能を利用することによって、定型的な処理を簡単に実施することができます。例えばパラメータを変えて実験をした際のデータを処理するなど。 この時に、スクリプトに対して何かしらの引数 (パラメータ) を渡すことができればより便利です。そして、 gnuplot にはもともとその機能が備わっているのです。 -c オプションの引数を利用 -c の後にスクリプトファイルを指定しその後にスペース区切りで数値や文字列などを並べることでスクリプトの引数とすることができます。 gnuplot -c <filename> ARG0 ARG1 ... 具体的にどういうことか見ていきます。例えば以下のようなスクリプトファイルを用意します。 ファイル名を script.plg とします。 print "This script is ", ARG0 print "1st arg :", ARG1 print "2nd arg :", ARG2 そして、引数を渡して実行すると以下のようになります。 > gnuplot -c ./script.plg test1 test2 This script is ./script.plg 1st arg : test1 2nd arg : test2 ARG0 は実行対象のスクリプト名、 ARG1 以降の ARG* はコマンドラインで与えられた引数に対して順次割り振られていくわけですね。 こちらの機能を利用することで、plot対象のファイル名を変えて同じ形式のグラフを出したいときなどに引数を与えるだけで簡単に実施ができるようになります。 ちなみにこの命名方式は bash スクリプトの引数の命名方式 に似ています。 -e オプションで先回りして変数を定義 -c オプションでスクリプトを実行する前に -e を利用して変数を定義してしまう方法です。 -e オプションでは指定したgnuplotのコマンドを実行することができます。ダブルクオーテーションが必要です。 例えば以下のようにすればサイン波をすぐにPlot