試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Vala

Vala言語で外部プロセスを実行する(スレッドを使用せずにGTK+のテキストビューに実行結果を表示するテスト)

ここではGLibのIOチャンネルの監視機能を用いて、スレッドを使用せずに外部プロセスの出力をGTK+のテキストビューに表示しつつ(プロセス終了時の)ステータス値を取得するテストを行う。 IOチャンネルの監視はGLibのメインループ上で動作するため、シングルス…

Vala言語で外部プロセスを実行する(スレッドを使用してGTK+のテキストビューに実行結果を表示・コード例)

「Vala言語で外部プロセスを実行する(スレッドを使用してGTK+のテキストビューに実行結果を表示・メモ)」の内容を踏まえた上で、GTK+上のテキストビュー上に入力したコマンドを実行してテキストビューに結果を表示するためのコード例を貼り付ける。 今回、子…

Vala言語で外部プロセスを実行する(スレッドを使用してGTK+のテキストビューに実行結果を表示・メモ)

ここでは「外部プロセスをバックグラウンド実行しつつ、出力をGTK+のテキストビューにリアルタイム表示する」でPythonを用いて行ったように、GTK+のテキスト入力欄に入力したコマンドを実行し、結果をテキストビュー上に表示するコードを作成した上でのメモ…

Vala言語で外部プロセスを実行する(GLib.Process.spawn_async_with_pipes()を使用・メインループを用いない場合と出力メッセージの処理)

ここではGLibのメインループを用いない場合の子プロセスのステータス値の取得についてとGLib.Process.spawn_async_with_pipes()から得られたファイル記述子を用いた出力の処理についてを扱う。 メインループを用いずに子プロセスのステータスを取得 「Vala言…

Vala言語で外部プロセスを実行する(GLib.Process.spawn_async_with_pipes()を使用・メインループを用いた例・コード例)

ここでは「Vala言語で外部プロセスを実行する(GLib.Process.spawn_async_with_pipes()を使用・メインループを用いた例・メモ)」の内容を踏まえてGLib.Process.spawn_async_with_pipes()を用いた外部プロセスの実行とステータス値の取得のテストをGLibのメイ…

Vala言語で外部プロセスを実行する(GLib.Process.spawn_async_with_pipes()を使用・メインループを用いた例・メモ)

「Vala言語で外部プロセスを実行する(簡単な例・メモ)」と「Vala言語で外部プロセスを実行する(簡単な例・コード例と出力結果)」の続き。ここではGLib.Process.spawn_async_with_pipes()関数を使用しつつ、GLibのメインループの機能により子プロセス終了時に…

TiMidity++のALSA MIDIデバイスとしての動作を制御するシステムトレイツールをVala言語で書き直し

以前「TiMidity++のALSA MIDIデバイスとしての動作を制御するシステムトレイツールを作成」で作成したtimidity++-iconというツールを(Pythonから)Vala言語に書き直した。 常駐するツールなので少しでも動作を軽くしたいというのもあるが、Vala言語のテスト的…

GTK+のウィンドウ位置の保存と復元のテストをVala言語に移植

以前「ウィンドウの位置とサイズを記憶し、壊さずに隠した後で再表示を行う」でPyGTKを用いて行ったテストをVala言語で書いたものを貼り付ける。 大まかな要領は同じだが、ソースの形としては見やすくなっているような気もする。 [任意]ファイル名: savegeom…

Vala言語で外部プロセスを実行する(簡単な例・コード例と出力結果)

「Vala言語で外部プロセスを実行する(簡単な例・メモ)」の続き。 ここではGLib.Process.spawn_command_line_async()とGLib.Process.spawn_command_line_sync()のそれぞれを用いたテストコードとその実行結果を貼り付ける。 GLib.Process.spawn_command_line_…

Vala言語で外部プロセスを実行する(簡単な例・メモ)

ここではVala言語を用いて外部プロセスを実行するための処理を扱う。 元々GLibの機能なので、GLibのC言語のAPIから直接使用することもできるが、Vala言語ではより扱いやすくなっている。 ここでは最もシンプルな「コマンド行文字列から外部プロセスを実行す…

C#言語とVala言語のプロパティについて

プロパティについて C#言語とVala言語では、クラスの中でメンバ関数とメンバ変数の両方の性質を併せ持つプロパティというものが使用できる。 これはクラスのメンバをクラスの外から読み書きするときに クラスの中からはメンバ関数のように記述して クラスの…

Vala言語で.ini形式に近い設定ファイルの読み書きを行う

Vala言語では、GLibの機能として用意されているGKeyFileという構文解析/ファイル入出力機能を利用して、Windowsの.iniファイルに近い形式の設定ファイル*1を処理することができる。 使い方 最初にGLib.KeyFileオブジェクトを生成する(コンストラクタ引数はな…

GTK+の最近使用したファイル一覧にファイルを追加するコードをValaとC#で作成

「PyGTKで最近開いたファイルを記憶する」で最近使用したファイル一覧へファイルを追加するためのコードをPython(PyGTK)で記述したが、ここでは同じことをC#言語(Gtk#)とVala言語で書いてみた。 (2009/7/10)ボタンのラベルなどの微調整を行った。 C#(Gtk…

Vala言語におけるクラス継承時の親クラスのコンストラクタの呼び出しに関する追加メモ

Vala言語向けのバインディングを用いることでGTK+などの外部パッケージを用いたプログラムが作成できるが、そのようなパッケージの言語バインディングに用意されているクラスを継承するときに、クラスに元々あるコンストラクタをValaのbase()で呼ぼうとして…

C#言語とVala言語におけるクラス継承時の親クラスのコンストラクタの呼び出しに関する挙動の違いについて

Vala言語はC#言語に近い文法を持つが、クラスを継承したときの親クラスのコンストラクタの呼び出しに関する挙動は異なる。 親クラスの引数なしコンストラクタはVala言語では自動的には呼ばれない 親クラスのコンストラクタを引数付きで呼ぶ Vala言語で親ク…

ValaやC#の「ref」や「out」について

Vala言語と(影響を受けている)C#言語では、関数へ引数を渡すときに「ref」や「out」といったキーワードが手前に渡されることがある。 ref/outの効果 「ref」や「out」は関数を呼ぶ側で定義した変数を引数にして渡したときに、その内容を関数の中で操作した…

PulseAudio上のオーディオをWAVE保存するツールの続き(詳細なオーディオ形式の指定とエラーメッセージの処理についてのメモ)

「PulseAudio上の音声をWAVE保存するためのコードをVala言語で作成(仮)」でとりあえずPulseAudio上のオーディオ(ストリーム)をWAVE形式で保存できるところまで作成したツールをその後改良して サンプルレートなどの詳細オーディオ形式を変更可能にする ファ…

Vala言語におけるユーザ定義例外について

「Pythonの例外とその処理に関する覚え書き(ユーザ定義の例外など)でPythonによるユーザ定義例外の例を作成したが、これと同じことをVala言語で書いてみた。 メモ 例外の定義 下のような形式でエラードメインというものを定義する。 errordomain FooBarError…

連結リストへのデータ追加にかかる方向/時間のテストをVala言語に移植

「GLibで連結リスト(リスト構造)にデータを追加する方向とその時間について」のテストをVala言語に移植してみた。 言語的にはC#言語に近いので「リストへのデータ追加にかかる方向/時間のテストをC#言語に移植」のコードに近いものの、実際にはC言語のGLib…

PulseAudio上の音声をWAVE保存するためのコードをVala言語で作成(仮)

以前「PulseAudio上の録音に関する覚え書き(WAVE形式での保存)」でPulseAudio上の音声データをGStreamerプラグイン経由でWAVE形式で保存する作業を扱ったのだが、Vala言語のGStreamerの例を何気なく見ていたら、GStreamerを使用したオーディオ処理はかなりシ…

GTK+のシステムトレイのテストのコードをVala言語に移植

Gtk#のコードをもとにしてValaのコードを作成 「Gtk#でシステムトレイを使用してメニューを表示する」のコードをもとにしてGTK+のシステムトレイのテストのコードをValaに移植してみた。 using Gtk; namespace ValaSystrayTest { /* * 継承の記述はC#と同…