[表示 : 全て 最新50 1-99 101- 201- 2ch.scのread.cgiへ]
Update time : 12/02 22:23 / Filesize : 71 KB / Number-of Response : 253
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Valaについて語りませんか



1 名前:login:Penguin [2009/07/05(日) 14:31:59 ID:IdyQQEIy.net]
C#ライクなGNOMEのプログラミング言語Valaについて語り合いましょう

【GNOME Live!】
Vala
live.gnome.org/Vala

Tutorial
live.gnome.org/Vala/Tutorial

【SourceForge】
ValaによるGNOMEアプリケーションのプログラミング
sourceforge.jp/magazine/08/12/15/0143207

101 名前:97 mailto:sage [2010/04/16(金) 19:52:41 ID:/6r9tkwK.net]
>>97
ad-hoc rhtml like template is good stuff. ^^;

102 名前:login:Penguin mailto:sage [2010/04/21(水) 01:15:16 ID:nUefU5z/.net]
テキストファイルを読み込んで string を返すようにしようと思ったら、
意外とすっきり書けないな。
一番シンプルに書こうとするとどんな感じになるかな?

103 名前:login:Penguin mailto:sage [2010/04/21(水) 01:41:59 ID:nUefU5z/.net]
自己解決した。
var file = new MappedFile ("hoge.txt", false);
var text = (string) file.get_contents ();
でいいかな。

104 名前:login:Penguin mailto:sage [2010/04/22(木) 23:52:50 ID:Nm7c6dz1.net]
>>100
gitorious.org/lethal-works/valagtkdoc/blobs/master/sectionsgenerator.vala

--pkg vala-1.0
参考になるかも

105 名前:login:Penguin mailto:sage [2010/04/25(日) 01:04:30 ID:j8R9B01z.net]
ありがと。見たところ読み込みにはMappedFileを使っているみたいだから、
やっぱりMappedFileで良さそうだ。

106 名前:login:Penguin mailto:sage [2010/05/01(土) 18:58:09 ID:lTmE6Ym2.net]
>102
ちょっと遅いけど。
live.gnome.org/Vala/GIOSamples
こっちの方が、順次データを読み取っていく分でかいファイルを扱う時に良さげ。

107 名前:login:Penguin mailto:sage [2010/06/08(火) 02:51:18 ID:RC5oVszE.net]
void main () {
int[] a = { };
a += 1;
a += 1;
}
これをCに変換すると
static void _vala_array_add1 (gint** array, int* length, int* size, gint value) {
if ((*length) == (*size)) {
*size = (*size) ? (2 * (*size)) : 4;
*array = g_renew (gint, *array, *size);
}
(*array)[(*length)++] = value;
}
static void _vala_array_add2 (gint** array, int* length, int* size, gint value) {
if ((*length) == (*size)) {
*size = (*size) ? (2 * (*size)) : 4;
*array = g_renew (gint, *array, *size);
}
(*array)[(*length)++] = value;
}
と全く同じ関数が2つ出来るのは無駄過ぎる…。バグだよなぁ。


108 名前:login:Penguin mailto:sage [2010/06/08(火) 23:45:06 ID:RC5oVszE.net]
0.9.1 リリース記念上げ!
今年中に 1.0 のリリースもあるかな。


109 名前:login:Penguin [2010/06/22(火) 00:49:34 ID:TjdwcnPd.net]
0.9.2 リリース記念上げ!




110 名前:login:Penguin [2010/07/22(木) 10:29:41 ID:14B/bjH4.net]
遅くなったけど、
0.9.3 リリース記念上げ!

111 名前:login:Penguin [2010/08/01(日) 23:45:56 ID:9Z4W30qB.net]
0.9.4 リリース記念上げ!

112 名前:login:Penguin mailto:sage [2010/08/11(水) 09:30:49 ID:biiTT6x9.net]
Valaってリファレンスカウント?

113 名前:login:Penguin [2010/08/16(月) 13:38:29 ID:+2cG0APL.net]
今までRuby/Gtk2で書いてたけど、Vala結構いいな。

114 名前:login:Penguin mailto:sage [2010/09/04(土) 09:53:44 ID:QHFWA809.net]
マクロとインライン関数とインラインアセンブラを使いたいっ

115 名前:login:Penguin [2010/09/06(月) 23:38:41 ID:me8osAkX.net]
0.9.8 リリース記念上げ!

116 名前:login:Penguin mailto:sage [2010/09/06(月) 23:47:04 ID:me8osAkX.net]
やっと書き込めるようになったよ…とほほ

>>109
リファレンスカウントだよ。

>>111
インライン関数は、-O3でコンパイルすればコンパイラの判断で小さい関数は
インラインになるから、特別必要ではないかな。
マクロは使わずにジェネリックスを使うべし。
インラインアセンブラもCの関数内に書いて、Valaにインポート(.vapi)するので
いいんじゃない?


117 名前:login:Penguin mailto:sage [2010/09/08(水) 15:47:24 ID:0olPHVFE.net]
>>113
Valaの言語仕様見たら、これでもうC++,C#いらないんじゃない?

118 名前:login:Penguin mailto:sage [2010/09/10(金) 00:42:35 ID:CnYQUcwL.net]
>>114
いらなくなるって事はないだろうけど、C++,C#の良いとこ取りで
ある事には違いない。
それに、C++はライブラリを作ってもC++からしか(直接)呼び出せないけど、
Valaでクラスライブラリを作ってもCからも使えるのが最高。


119 名前:login:Penguin mailto:sage [2010/09/10(金) 08:06:49 ID:luUlP4sj.net]
文字コードの変換がうまくできん
sjis->utf8で、iconvと同じで〜とかが入ってると死ぬ



120 名前:login:Penguin mailto:sage [2010/09/11(土) 01:16:19 ID:m+SVumir.net]
Valaって、C++やgtkmmの知識は必要ないの?

121 名前:login:Penguin mailto:sage [2010/09/11(土) 01:25:28 ID:80Xsc9fh.net]
>>116
Valaで文字コードの変換をやった事がないんでよく分からん。
まぁ、基本UTF-8だからね…

>>117
まったく必要ないよ。C#にそっくりだけど、C#を知っている必要もないし。


122 名前:login:Penguin mailto:sage [2010/09/11(土) 21:16:11 ID:bAfz4iHt.net]
全部単一のソースファイルに書いているうちはいいとして、
複数のファイルにわけたくなった場合の分割コンパイルってどうやるの?

123 名前:login:Penguin mailto:sage [2010/09/11(土) 23:23:42 ID:80Xsc9fh.net]
自分はCMake使ってるけど、それがやってる手順は
・必ず valac -C *.vala(全部のValaソース) を実行する
valac は内容が同じだと *.c のタイムスタンプを更新しない
それに、必ず全Valaソースを valac に掛けないと、ちゃんと*.cが出来ない
・更新された *.c をCコンパイラでコンパイルする
その時にヘッダーファイルはいらないようになってる。
(使っているライブラリのはいる)
・で、出来た *.o をリンクする
って感じかな。


124 名前:login:Penguin mailto:sage [2010/09/12(日) 18:31:31 ID:FtkVyF/Q.net]
速くなんのかそれ? 分割コンパイルの意味ほとんどなさそー。

125 名前:login:Penguin mailto:sage [2010/09/13(月) 21:43:56 ID:sTXZUSGC.net]
-C は*.cの日付しか比較してないかな。
感覚的には、g++よりはだいぶ早いよ。
だた巨大なプロジェクトだとどうなるか分からん。


126 名前:login:Penguin mailto:sage [2010/09/14(火) 22:01:58 ID:q84SH/q/.net]
配列のソートをやるときにPosix.qsortが出てくるのがださいな。
array.sort(〜);
ってやらせてほしい。最新版だとできるのかもしれないけど。

127 名前:login:Penguin mailto:sage [2010/09/14(火) 23:46:50 ID:v9kG5jgm.net]
Array を使えば Posix.qsort を使わなくてもいいけど、Array 自体が
ダサイんで、その辺りでもっとモダンなAPIを使いたかったら
ttp://live.gnome.org/Libgee
がいいよ。


128 名前:login:Penguin mailto:sage [2010/09/14(火) 23:52:59 ID:q84SH/q/.net]
libgeeか。libgeeも標準でついてくればいいのに

129 名前:login:Penguin mailto:sage [2010/09/15(水) 00:29:40 ID:GF+yTf6g.net]
まぁ、Vala は余計なランタイムがいらないのが売りだから、
標準でついてくる事はなさそう。
Array がもっと洗練されたインターフェースになれば必要なくなるのに。




130 名前:login:Penguin mailto:sage [2010/09/15(水) 23:28:28 ID:e37Wp/kJ.net]
盛り上がってきたな。

131 名前:login:Penguin mailto:sage [2010/09/16(木) 07:53:18 ID:aySYUnZ7.net]
日本語の情報すくなすぎわろす

132 名前:login:Penguin mailto:sage [2010/09/18(土) 01:37:41 ID:8ySMdkov.net]
ちょっとしたTIPS。
printf にファイル名と行番号を一緒に表示したい時とかあっても、
Vala は __FILE__ や __LINE__ とかが使えない。そこで、
message ("hoge");
ってやれば、
** Message: hoge.vala:15: hoge
みたいに、ファイル名と行番号が表示されるよ。


133 名前:login:Penguin mailto:sage [2010/09/18(土) 02:14:47 ID:8ySMdkov.net]
>>121
今一番デカい Vala 使ったプロジェクトって何か分からないけど、
Vala 自身が結構デカいんで、>>120の速度を検証してみた。

vala-0.9.8/vala/ 以下に *.vala が145ファイルあって、全く
依存性のない valacomment.vala を日付だけ変えて make を
したところ、valac に145ファイルを一気に渡してるけど、
その時間が10秒ぐらい掛かってた。(core2 duo 2.16GHz)

その後のビルドは gcc なんで、g++ に比べるとかなり早い。
まぁ、ちゃんと細かくライブラリに分けて valac にあまり
ファイルを渡さないようにするのが吉だな。


134 名前:login:Penguin mailto:sage [2010/09/18(土) 08:03:56 ID:ZMH1fM+O.net]
>>129
Log.FILEとLog.LINEでおk

135 名前:login:Penguin mailto:sage [2010/09/18(土) 13:57:49 ID:dKwk8Vzz.net]
誰もきいてないg++との比較を唐突に持ち出して自分を慰めるスレ

136 名前:login:Penguin mailto:sage [2010/09/19(日) 00:09:32 ID:bLHejXEb.net]
>>131
おぉ、それは知らなんだ。ありがとう。


137 名前:login:Penguin [2010/09/19(日) 08:12:10 ID:bLHejXEb.net]
0.10.0 リリース記念上げ!


138 名前:login:Penguin mailto:sage [2010/09/25(土) 06:12:27 ID:auRxQl39.net]
>>113の-O3でのインライン関数は、gccだと同じファイル内にstatic宣言されている
関数だけしか自動的にインラインにならなかった。
だから、インライン関数はやっぱりValaが対応してくれないと駄目だね。
場合によっては、パフォーマンスに大きく影響する所だから早めに対応して欲しいな。


139 名前:login:Penguin [2010/10/13(水) 01:01:14 ID:uqtJdPnG.net]
おっと、忘れた。
0.11.0 リリース記念上げ!




140 名前:login:Penguin [2010/10/13(水) 17:24:27 ID:yOuawncH.net]
Fedoraに続いてUbuntuでもF-Spotに代わってShotwellが標準に。

141 名前:login:Penguin mailto:sage [2010/10/15(金) 10:02:51 ID:vZDRagAZ.net]
>>137
脱mono&.netって流れですな。
こりゃ吉報だ

142 名前:login:Penguin mailto:sage [2010/10/16(土) 13:10:02 ID:ArVLh3zF.net]
>>137
おぉ、Valaが少しずつ浸透していってうれしいなぁ。
後はGTK+とWindowsの相性がもっと良くなってくれればいいんだが。

143 名前:login:Penguin [2010/10/27(水) 01:52:27 ID:uug/Y6Un.net]
0.11.1 リリース記念上げ!

なぜ 0.12 じゃないのか分からん…


144 名前:login:Penguin mailto:sage [2010/10/27(水) 08:19:44 ID:zAy76E0j.net]
リリースノートとか見てないけど、よほど小規模なんだろう。
それかバージョンの上げ方を変えたとか

145 名前:login:Penguin mailto:sage [2010/10/28(木) 02:52:40 ID:tk8GPYzV.net]
ん? 0.10.1 リリース記念あ…いや上げない
0.11 が開発ブランチで、0.10 が安定ブランチらしい。
そんで、0.12 が 1.0 になるかもだって。


146 名前:login:Penguin [2010/11/10(水) 00:38:44 ID:ygmS3jMN.net]
0.11.2 リリース記念上げ!

基本的にバグフィックスバージョンだけど、
出力されるCのソースが綺麗になった気がする。


147 名前:login:Penguin mailto:sage [2010/11/23(火) 02:17:51 ID:McaRlFmi.net]
string が単なるバイト列になったので utf-8 の日本語を1文字づつ処理する方法。
void main()
{
string name = "焼肉定食";

for (string utf8 = name; utf8.length > 0; utf8 = utf8.next_char()) {
unichar chr = utf8.get_char();
stdout.printf("%s\n", chr.to_string());
}
}


148 名前:login:Penguin mailto:sage [2010/12/05(日) 04:35:31 ID:DrFQ2hQ2.net]
今,Shotwell co してるんだけどvala ぽい

149 名前:login:Penguin mailto:sage [2010/12/05(日) 05:07:33 ID:bhyZjHqe.net]
>>145
>>137で既出なんだけど、こういうGTK+のアプリを作るにはうってつけなんだよね。




150 名前:login:Penguin mailto:sage [2010/12/05(日) 05:16:17 ID:bhyZjHqe.net]
それと、>>144は unowned を使わないと効率が悪かった。
Cに変換して g_strdup がやたら使われていたら大抵 unowned のし忘れだね。
最近 const も使えるようになったんで使ってみた。
void main()
{
const string name = "焼肉定食";

for (unowned string utf8 = name; utf8.length > 0; utf8 = utf8.next_char()) {
unichar chr = utf8.get_char();
stdout.printf("%s\n", chr.to_string());
}
}


151 名前:login:Penguin mailto:sage [2010/12/13(月) 21:33:08 ID:smRVrdmh.net]
結局吐いたCのソースを眺めてたりするよなw

152 名前:login:Penguin mailto:sage [2010/12/21(火) 01:12:22 ID:ABvoFods.net]
バイナリファイルの読み書きはこんな感じかな。
namespace Binary {
struct Bin {
int param0;
float param1;
}

static int main (string[] args) {
var bin = Bin ();
bin.param0 = 321;
bin.param1 = 456.0f;

try {
// 書き込み
FileUtils.set_contents ("data.bin", (string) (&bin), (ssize_t) sizeof (Bin));

// 読み込み
var file = new MappedFile ("data.bin", false);
Bin* bin_in = (Bin*) file.get_contents ();

print ("%d:%.2f\n", bin_in.param0, bin_in.param1);
} catch (Error e) {
print ("%s\n", e.message);
}

return 0;
}
}


153 名前:login:Penguin mailto:sage [2010/12/30(木) 02:30:08 ID:TDGgyZNr.net]
GLib の API は使った後に g_free しないといけないものがたくさん
あるんで、メモリリークせずにちゃんと書こうとしたらスゲー大変。
(別に GLib が悪いという訳ではない)

Vala は C 並の速度でありながらメモリリークを気にしなくていいんで、
それだけでもすんげー便利なんだよね。


154 名前:login:Penguin [2011/01/01(土) 00:08:35 ID:I3WGYOP1.net]
あけおめ!
今年も Vala の進化が楽しみだね。


155 名前:login:Penguin [2011/01/10(月) 04:18:42 ID:DHLV8UY4.net]
0.11.3 リリース記念上げ!

新機能が追加されなくなってきたんで、1.0のリリースが近いのかも。

156 名前:login:Penguin [2011/01/16(日) 10:24:21 ID:8UPlgNHy.net]
0.11.4 が昨日出てた

なんとなくだけど、しばらく停滞するんじゃないべか…
という希ガス

157 名前:login:Penguin mailto:sage [2011/01/19(水) 00:53:33 ID:AHjWAb2g.net]
停滞じゃない安定だ
ただ、停滞も安定もして欲しくないけどね

158 名前:login:Penguin [2011/02/01(火) 00:53:13 ID:wZrZvTv6.net]
質問だけど、*.vala を *.c にした時にインクルードされるファイルって
どうやって決定されるんだ?
インクルードして欲しいファイルがインクルードされずにちょっと困ってる…

159 名前:login:Penguin mailto:sage [2011/02/01(火) 12:34:11 ID:tDJ1c7gg.net]
[CCode (cheader_filename = "nobita/sanno.h")]



160 名前:login:Penguin mailto:sage [2011/02/05(土) 23:27:54 ID:+01ndB4N.net]
>>156
ありがとう。vapiにそれが足りないだけだった。


161 名前:login:Penguin mailto:sage [2011/02/06(日) 16:09:57 ID:f8dHhTIQ.net]
my.opera.com/btiffin/blog/opencobol-vala-genie-c-livin
opencobol.no-ip.org/download.html
itpro.nikkeibp.co.jp/article/Watcher/20101119/354329/
www.lancard.com/diary/
jp.opencobol.org/modules/newbb/viewtopic.php?topic_id=148&forum=1&viewmode=flat&order=ASC&start=0

継続は力なり帳票は文化なりと…


162 名前:login:Penguin [2011/02/16(水) 01:18:26 ID:qQvuhHNh.net]
0.11.6 リリース記念上げ!

だいぶ安定してきたなぁ

163 名前:login:Penguin mailto:sage [2011/02/16(水) 01:31:17 ID:qQvuhHNh.net]
Valaのfor文をCに変換すると変な書き方になるよなぁ。例えば
for (int i = 0; i < 10; ++i) {
if (i == 3) {
print ("test\n");
}
}

gint i;
i = 0;
{
gboolean _tmp0_;
_tmp0_ = TRUE;
while (TRUE) {
if (!_tmp0_) {
i = i + 1;
}
_tmp0_ = FALSE;
if (!(i < 10)) {
break;
}
if (i == 3) {
g_print ("test\n");
}
}
}
となるけど、アセンブラにするとほぼ同じになる。

164 名前:login:Penguin mailto:sage [2011/02/20(日) 19:34:08.24 ID:gtuQ5lXO.net]
mail.gnome.org/archives/vala-list/2011-January/msg00173.html

Monoとの比較結果が出てるけど、個人的にはValaの方が圧倒的かなと
思ってたんで、ちょっと意外だった。まあgobject自体そんなに
軽い代物じゃないから仕方ないかもしれないけど。

このレポートに対応して、g_signal関連の修正が入るみたいだし、
結果的にはよかったね。

165 名前:login:Penguin mailto:sage [2011/02/21(月) 23:51:29.57 ID:xkookBj5.net]
>>161
Valaのお陰で他のオブジェクトシステムと簡単に比較出来るようになったんで
GObjectの重さが露呈されてきたと思う。
やっぱりベースの部分なんで、どんどんチューニングして欲しいもんだ。

166 名前:login:Penguin mailto:sage [2011/02/28(月) 00:46:09.95 ID:pa7jLov5.net]
valaを知ってから心の勃起が収まらない。
けど、シンタックスだけ同じでベースがgobjectじゃないvalaっぽい言語が欲っしいなっ。

167 名前:login:Penguin mailto:sage [2011/03/01(火) 00:21:13.12 ID:fI1dwocM.net]
>>163
Dova profileってのがあるよ。
Valaだけを使って、glib、gobjectを再実装している。

それはそうと、Genericsが未完成過ぎて泣けてくる…

168 名前:login:Penguin mailto:sage [2011/03/02(水) 01:23:52.25 ID:W0TOUp0F.net]
いつの間にか可変個引数使えるようになってた。

169 名前:正義の下着:コスモパンティー mailto:sage [2011/03/06(日) 10:12:39.50 ID:VJ0f/vyY.net]
genieって日本語使えないの?valaをもっと簡潔表現した言語のように
感じてます。



170 名前:login:Penguin mailto:sage [2011/03/08(火) 00:55:14.96 ID:Qg/iQa8Q.net]
なんか、ちゃんとsetlocaleしないと日本語が表示されなくなった…
これはValaもGenieも同じ。

[indent=4]

init
Intl.setlocale (LocaleCategory.ALL, "")
var f = new Foo ()
print f.bar ("世界")

class Foo : Object

def static bar (name : string) : string
return "こんにちわ " + name


171 名前:login:Penguin mailto:sage [2011/03/08(火) 00:56:36.53 ID:Qg/iQa8Q.net]
> return "こんにちわ " + name
じゃなくて
> return "こんにちは " + name
だった…

172 名前:login:Penguin [2011/03/18(金) 09:16:24.29 ID:7nzfGrJF.net]
0.11.7 リリース記念上げ!


173 名前:login:Penguin mailto:sage [2011/03/19(土) 08:02:59.57 ID:3X5j4uKl.net]
ttp://live.gnome.org/Vala/ValaForCSharpProgrammers#Not_Available
で、C# にあって Vala にない機能一覧があるけど、それぞれ私見を書いてみた。

Not Available
* No LINQ (not planned for 1.0, maybe later)
-> 実装待ち
* No operator overloading (vala-list)
-> あって欲しい…。ただ、[](インデクサー)は追加出来る
* No method or constructor overloading (use different method names / named constructors instead, as described above)
-> 別名関数とオプショナル引数を使う事で問題無し
どうしてもというなら、method overloading は GValue を使うことで可能 (mail.gnome.org/archives/vala-list/2008-July/msg00017.html)
* No extension methods
-> 通常使うべきでない機能 (www.atmarkit.co.jp/fdotnet/csharp30/csharp30_05/csharp30_05_01.html)
* No constraints on generic type parameters (i.e. no where)
-> あって欲しい…
* No generic delegates
-> 現状で使用可能 (0.9.3 で追加)
* No generators (yield return, planned)
-> 実装待ち
* No variable length argument lists (params, planned), for C-Bindings already possible, e.g. stdout.printf(string format, ...)
-> 現状で使用可能
* No conversion operators (i.e. no explicit and implicit)
-> あった方がいいが、obj.to_hoge() を都度追加するようにすれば問題無し
* No partial classes and methods
-> 通常使うべきでない機能 (Vala のソースを自動生成するツールには必要かもしれないけど)


174 名前:login:Penguin mailto:sage [2011/03/19(土) 08:04:03.51 ID:3X5j4uKl.net]
続き

* No sealed classes (planned)
-> 実装待ち (無くても問題ないけど)
* No static classes (use nested namespaces instead. Vala supports namespace methods, they are implicitly static)
-> ネームスペースを使えば問題無し
* No goto, no labeled statements
-> 特に問題なし。goto はエラー処理で便利だが、例外を使えばいい
* No constructor initializers
-> base が使えるので問題無いはずだが…
* No bounds checking for arrays (optional support planned)
-> 実装待ち (これに頼らず、ちゃんと assert を仕込むべき)
* No checked, unchecked, fixed, stackalloc, readonly
-> checked, unchecked は特殊用途でしか不要なはず
-> fixed はガベージコレクションの方法が違うので、そもそも不要
-> stackalloc は大体同じ事がより直感的に可能なので不要
-> readonly はプロパティを使えば可能だが、オーバーヘッドはデカいのであった方がいい機能

実装予定機能
* LINQ (1.0 以降)
* generators
* sealed classes
* bounds checking for arrays

実装して欲しい機能
* operator overloading
* constraints on generic type parameters


175 名前:170 mailto:sage [2011/03/21(月) 08:55:03.50 ID:qRJv0v7y.net]
> -> readonly はプロパティを使えば可能だが、オーバーヘッドはデカいのであった方がいい機能
これは
> -> readonly はプロパティを使えば可能 (若干オーバーヘッドが大きい)
だね。間接参照が入るだけなんで、デカいという程じゃなかった。

実装予定機能
* LINQ (1.0 以降) → これは実装されるとは思えん…
* generators → これもC言語の兼ね合いで難しいと思うけど、どう実装されるか楽しみ
* sealed classes → これは主にライブラリ向けの機能だけど、GObject との兼ね合いで実装は無理だね
* bounds checking for arrays → これも必要な所に assert を仕込めばいいけど、それを自動化してくれれば助かる

実装して欲しい機能
* operator overloading → 有用なのは行列演算だけなんだけど…
* constraints on generic type parameters → これがないと Generics がかなり不便な気がするんだけど…


176 名前:login:Penguin [2011/04/05(火) 00:35:52.41 ID:7KO6Qhrh.net]
0.12.0 リリース記念上げ!

>>147を0.12.0の新機能で実装すると以下のようにシンプルに書ける。
void main()
{
const string name = "焼肉定食";

int index = 0;
unichar c;
while (name.get_next_char(ref index, out c)) {
stdout.printf("%s\n", c.to_string());
}
}


177 名前:login:Penguin mailto:sage [2011/06/05(日) 17:00 ]
[ここ壊れてます]

178 名前::28.73 ID:kbYNy4xN.net mailto: 0.12.1 リリース記念上げ!

MonoもQtも先行き不安な状態だけど、ValaとGTK+はマイペースに進化してるかな。
[]
[ここ壊れてます]

179 名前:login:Penguin mailto:sage [2011/06/05(日) 19:45:44.98 ID:z8MV5qJg.net]
>先行き不安
kwsk

Monoはモバイルの方に向かってるんだっけ?



180 名前:login:Penguin mailto:sage [2011/06/05(日) 22:26:15.15 ID:z8MV5qJg.net]
java( or C#)のように書けて、Cとして出力し、GObjectの恩恵が受けられる
ってのはかなり魅力あると思うんだが、普及するのはまだまだ先なのかなぁ…

181 名前:login:Penguin mailto:sage [2011/06/06(月) 01:05:26.08 ID:rgr9QUMR.net]
>>175
金を出してくれてた会社から独立したからだけど。
確かにiPhoneとかの方に向かってるけど、iPhoneでMonoを使うメリット
ってあるんだろうか…

>>176
基本的にGLib,GTK+の世界でなきゃ、旨味が少ないんでそれの普及次第だと思う。
GTK+界隈ではそこそこ普及してると思うよ。
dconfエディタとか割と重要なソフトも使うようになったし。

182 名前:login:Penguin mailto:sage [2011/06/06(月) 01:48:22.73 ID:fOI8aekF.net]
>GTK+の世界でなきゃ
そうだった、あまりの便利さに視野が狭くなってた

ところでValaのクラス変数(static)はJavaのそれと違って少しつまずいた
例えば下のコード

class Hoge {
 static Hoge foo = new Hoge();
static void check_foo {
  assert( foo != null );
 }

 public Hoge(){}
}

Hoge.check_foo() を呼び出しても Hoge.foo は初期化されていないから
Hoge.init() を用意して対処するようにしたんだけど、これでいいのかな

183 名前:login:Penguin mailto:sage [2011/06/06(月) 02:02:47.47 ID:4QezmLvV.net]
class Hoge {
static Hoge foo = new Hoge();
public static void check_foo() {
assert( foo != null );
print("foo = %p\n", foo);
}

public Hoge(){}
}

void main()
{
var hoge = new Hoge();
hoge.check_foo();
}
これで、問題無く動いたよ => foo = 0x9c2e000


184 名前:login:Penguin mailto:sage [2011/06/06(月) 02:08:09.55 ID:4QezmLvV.net]
さらに言うと、
class Hoge : Object {
ってしないと、hoge.cにGObjectの代わりに自前のオブジェクト作成
コードを書き出すから、行数が多くなる。
: Object なし→259行 あり→114行


185 名前:login:Penguin mailto:sage [2011/06/06(月) 02:28:04.77 ID:fOI8aekF.net]
例えが中途半端ですまん、実はインスタンスを作らずにそのまま呼び出したいんだ
X) new Hoge().check_foo()
O) Hoge.check_foo()

普段は理解もせずObjectを継承するようにはしてたんだけど
そういった違いがあったのか



186 名前:login:Penguin mailto:sage [2011/06/06(月) 23:59:22.68 ID:4QezmLvV.net]
Singleton パターンの事なんだろうけど、その場合は
class Hoge : Object {
static Hoge foo;
public static void check_foo() {
if (foo == null) {
foo = new Hoge();
}
print("foo = %p\n", foo);
}

public Hoge(){}
}
で、いいんじゃない?

187 名前:login:Penguin mailto:sage [2011/06/07(火) 00:27:43.45 ID:hW4rMpee.net]
使い始めたばかりで vala の慣例とかは分からないけど、libxml の見本にはこんなのがあるね。

// Initialisation, not instantiation since the parser is a static class
Parser.init ();


188 名前:login:Penguin mailto:sage [2011/06/07(火) 19:51:30.07 ID:KLLer8r/.net]
>>182
こうすると初めて呼び出した時に値を入れてくれるんだけど
初期化するべき変数が多くなると大変そうだと思ってた

>>183
こちらは明示的に呼び出さなければいけない

でもよくよく考えてみると183の場合でも初期化チェックは必要だから
その時ついでに初期化(182と183を併用)もするようにするといいのかも

189 名前:login:Penguin mailto:sage [2011/06/07(火) 20:38:29.11 ID:KLLer8r/.net]
クラスの動的ロードについて
Javaで言うところのリフレクションっぽいことをValaでやってみたいと思って

Plugin Sample (GLib Samples)
ttp://live.gnome.org/Vala/TypeModules
ここを参考にして、サンプルはうまくいったんだけど
モジュールをリロードしようと思って同じ名前のクラスを2度typeofすると失敗する

GLib-GObject-WARNING **: cannot register existing type
GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed
GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0' failed

未知(ライブラリ内)のクラスを使用しなければ失敗しない
Valaの方でクラスのアンロードができればいいのかもしれないが、その方法がわからない



190 名前:login:Penguin mailto:sage [2011/06/08(水) 01:58:53.41 ID:PE72PAWT.net]
>>185
試してみたらエラーを起こせなかった。エラーになるコードを見てみたい。
クラスのアンロードの仕方も分からんなぁ。
確かに、未知(といってもGObjectシステム使用)の.soからインターフェースを
探し出してコールするような事をしたいけど、多分無理っぽい。
その為に、.gir(GObject Introspection)があるんだろうけど。

191 名前:login:Penguin mailto:sage [2011/06/10(金) 01:44:00.49 ID:mbXsAFUH.net]
>>186 とりあえずエラー出すにはサンプル中のmain内の処理を複数回行わせる
void main(string[] args) {
 for (int i = 0; i < 2; i++) {
  ...
}}

192 名前:187 mailto:sage [2011/06/10(金) 02:05:48.82 ID:mbXsAFUH.net]
サンプルの方法で作成したモジュール(ライブラリ)をリロードできないかと思ったけど
サンプル元となったRygelのソースを流し読みしても一度だけ読み込んでるみたい

Javaの場合はクラスローダを複数持つことで、同一のクラスをローダ毎に
別物として利用できるから、あたかもそのクラスをリロードしているように見せることは出来てた

193 名前:login:Penguin [2011/06/19(日) 01:12:10.73 ID:rodl4lLJ.net]
0.13.0 リリース記念上げ!

これといった新機能はないな。

194 名前:login:Penguin mailto:sage [2011/06/23(木) 21:53:19.16 ID:vfxUH1FB.net]
趣味でプログラミングを覚えようと思っているものです。
C,C++.Java、シェルスクリプトなどの入門書は一通り読んで、
その後ScalaやLISP入門本に挑戦するもワケワカラン状態に。

ネットでポチポチ情報を探っていたらValaに行きあたったのですが
入門本か、プログラム初心者向けに何処か良いValaの解説サイトは
ないでしょうか?  英語のサイトでも問題ないです。 

195 名前:login:Penguin mailto:sage [2011/06/24(金) 00:04:59.68 ID:4b2cB/Ua.net]
>>190
一通りの中にC#が無いけど、Valaやる前にC#やってるといいかも。
英語でもいいなら入門には本家サイトが一番いいよ。
ttp://live.gnome.org/Vala
↑このサイトの↓このチュートリアルが良くできてる。
ttp://live.gnome.org/Vala/Tutorial
あとは何かあったらここで聞けばいいよ。

196 名前:login:Penguin mailto:sage [2011/06/24(金) 00:49:48.92 ID:4b2cB/Ua.net]
>>188
> GLib-GObject-WARNING **: cannot register existing type
Vala は g_type_register_static でしか GType を登録しないからアンロード
出来ないんだな。
アンロードするには g_type_register_dynamic を使わない駄目らしいけど、
Vala を使って限りは無理っぽい

197 名前:login:Penguin mailto:sage [2011/06/24(金) 06:02:20.22 ID:bAUjSQpP.net]
>>192 そうなのか
でも新しいクラスを作りさえしなければ何度でもロードできるから、使い方によっては役立つかも

ソフトを再起動せずとも実行中に修正を適用できたらいいなくらいに考えてたので
諦めて本来のプラグイン・モジュールとして使うようにするよ

198 名前:login:Penguin mailto:sage [2011/06/24(金) 06:12:19.14 ID:bAUjSQpP.net]
>>190 Javaを知ってるんであればここも
ttp://live.gnome.org/Vala/ValaForJavaProgrammers
C#を知らなくても一応参考になるのでここも
live.gnome.org/Vala/ValaForCSharpProgrammers
Valadoc はほぼ必須
ttp://valadoc.org/references.html

ValaはExampleがそれなりに揃っててとても助かる、
とりあえず何か動かしたいならExample読むといいかも

199 名前:190 mailto:sage [2011/06/24(金) 09:46:37.22 ID:SGhe/7yN.net]
>191
MS独自路線はあまり好きではないので(Monoも今ひとつ元気無いし)
C#は避けていたのですが、そう言えばValaの文体とC#はかなり
似ているらしいですね。
食べず嫌いはやめてC#の入門本も読んでみます。 
あとVala本家ですね。  ありがとうございました。

>194
上の二つ、こと細かく書いてあって分かりやすそうですね。 
時間を掛けてよく読んでみます、ありがとうございます。  

3番目のValadocというのが何に付いて書かれてるのか
よく分らないのですが、これは一体、、、?
パット見、.debや.rpmパッケージの依存関係を解説している
ページによく似ている気がするのですが。



200 名前:login:Penguin mailto:sage [2011/06/24(金) 23:54:37.48 ID:bAUjSQpP.net]
ValadocはJavadocみたいなもの







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<71KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef