- 1 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 16:10:50 ]
- オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。
Ruby Home Page www.ruby-lang.org/ja/ = 前スレ Rubyについて Part 32 pc11.2ch.net/test/read.cgi/tech/1215531152/ 過去スレ・関連スレは >>2-
- 47 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 15:49:15 ]
- ていうか基本的にRuby本体に関する情報そのものは既に出揃ってるだろ
目新しいこと書かない限り重複は免れない
- 48 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 20:57:54 ]
- 初期のruby本はrubyを無視していきなり
オブジェクト指向の話になるのが面白かったんだが。 そういうのは期待できないかな。
- 49 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 21:11:39 ]
- フラナガン本はwhileをイテレータで実装とか変態的なことも載ってるよ。
- 50 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 11:03:08 ]
- Visual Studioを使ってRails開発「Ruby In Steel Personal Edition 2008」
www.moongift.jp/2008/10/ruby_in_steel_personal_edition_2008/
- 51 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 11:19:05 ]
- ホスト名見て積極的に読む気なくした
誰か別の人がレビューしてくれるまで待つ
- 52 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 16:38:21 ]
- moongift嫌いなのか
- 53 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 16:49:30 ]
- 自分が使ってるソフトウェアが紹介されれば、あんまりアテにしてない人がいる理由が実感できるかも
週に曜日を決めて2回とか、そういう「量より質」の比較レビューにあのパワーを注ぐことを望みたいところだ 「そんなんreadme見てソフト名でググればわかるよ!」と言いたいことが何度か
- 54 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 16:55:19 ]
- Open Alexandriaは好きだった俺
- 55 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 17:15:47 ]
- 質より量を望む人間にとっては、MOONGIFTのスピードと簡潔さはありがたい
知らなかったソフトウェアをいろいろ発見できるから
- 56 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 17:19:39 ]
- 知ってる情報が役に立たなかったから知らない情報も読みたくない。
不思議な人もいるもんだ。
- 57 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 17:29:39 ]
- >>56
お前頭悪いって言われるだろ…
- 58 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 17:46:20 ]
- >>56
気にするな 柔軟性の足りない人、もしくは記事見る時間が惜しいくらい忙しい人なんだよきっと
- 59 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 08:39:40 ]
- 外人さんが「1.9 compatibility デキタ!」 とかうるさい
うんうん Syntax Error 起こしてた場所は消えてるね でも 1.9 互換を謳うなら $KCODE 依存のコピペコードは直そうね 128バイトで世界を表現できる住人はこれだから困る
- 60 名前:デフォルトの名無しさん [2008/10/15(水) 13:03:41 ]
- >>59
おまえだって、右から左に書く言語のことなんか考慮したことないだろ
- 61 名前:デフォルトの名無しさん [2008/10/15(水) 16:55:33 ]
- テキストファイルから例えば"a"という文字を検索して、マッチすれば
その前後に指定の文字列を挿入する方法はありますでしょうか。
- 62 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 17:04:06 ]
- >>61
初心者スレでつい最近そういう話題が出てた
- 63 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 17:06:46 ]
- #!ruby -pni.bak
BEGIN{ Prefix = "pre" Suffix = "suf" } gsub(/a/, "#{Prefix}\\{Suffix}")
- 64 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 09:44:12 ]
- attr_reader :hoge?
と実質的に書けない件をこっちに振ってみるテスト
- 65 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 10:52:10 ]
- Module#bool_attr_reader を自分で定義して使えばよし
- 66 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 12:16:27 ]
- ぎゃー
このライブラリの次のバージョンから、動作もメソッドもめっちゃ変わるじゃん gem update でアップデートした人でテクニカルな使い方してた人は警告山盛りで涙目 まあ、公開ライブラリ作る人は最初から素直な実装をしようね (ライブラリが大きくなるとRubyでやれるオレカッコイイ独自実装は癌になる) というお話でした 今のメンテナが引き受ける前の作者が作った部分だな、これ…
- 67 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 13:51:18 ]
- 話の趣旨には大いに賛成だけど、
ここは自業自得っぽくね? >テクニカルな使い方してた
- 68 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 16:47:17 ]
- >>66
どのライブラリ?
- 69 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 16:59:55 ]
- 外部ライブラリのメソッドをバグ回避目的以外で上書きするとか賭けだよね
- 70 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 17:06:03 ]
- バグ回避目的であってもモンキーパッチは賭けだよ。
- 71 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 19:53:10 ]
- 式1 ? 式2 : 式3
式1の結果によって式2または式3を返します。 if 式1 then 式2 else 式3 end とまったく同じです。 ってあるけどさ、これどういう事? defined? String ? "OK" : "NG" => "expression" if defined? String then "OK" else "NG" end => "OK" 以下で確認。 ruby 1.8.2 (2005-04-11) [i386-linux] ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
- 72 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 20:02:33 ]
- >>71
優先順位の問題。 defined?(String ? "OK" : "NG") (defined? String) ? "OK" : "NG"
- 73 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 20:03:26 ]
- >>71
演算子には優先順位というものがあるでな、式と書いてあったらとりあえず括弧でくくってみることじゃ。
- 74 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 20:10:08 ]
- >>72-73
なるほど、式の優先順位か! おかげですっきりしたよ、ありがとう!
- 75 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 07:50:19 ]
- >>70
動作変更のメソッド上書きスクリプトを公開するより、バグ報告送ったほうが結局は手間がないことに最近やっと気づいた バージョン1.1用からバージョン1.5用まで5種類くらい公開して、さすがにキレて1.6で修正入れてもらったとかそんな感じ
- 76 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 16:35:28 ]
- Matzの会社を財務分析してみたんだが。
d.hatena.ne.jp/AntiSeptic/20080704/p1 などと思わせぶりな言い方をするものだから覗いてみりゃ、 なんて事無い田舎の零細企業の財務諸表であって、面白くもなーんともなかったわけだ。 それにしても、この程度の収益で2007年度って、 あの会社にとっては多分空前絶後の景気のいい年だったはずだの Rubyとゆー「鉱脈」があるだの言っているのは何なのだ。 Geekのヨタ話というのは、いつもこんなしょぼいスケールで行われているのか? あそこの技術者の平均レベルは、他の普通の会社よりはずっと高いと思うって、 これじゃあ、技術なんてIT企業の収益とは何の関係も無いと証明しているようなもんじゃねえか。 そもそも、この会社が何をやっているのかがHPを見た限りではよく分からん。 要は受託開発だろ労働力を人月で売ってるだけだろマーケ屋がこねくりあげた横文字得意げに使ってなに悦に入ってやがんだコラ。 更には製品・サービス部門まであって、なにやら参考価格が書いてあるところを見ると、 多分にパッケージっぽい印象を受けるが、それでいて全体の粗利率が26%程度ではどうしようもないだろ。 あそこに入りたい人は、損益計算書も注意して見ておくといい。まぁこれはどんな会社でも同じだけど、 ここを見るといろんなことが見えて来る。株価指標を計算してみるのもいい(非公開会社でもね)。
- 77 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 16:37:02 ]
- それもう散々げっぷが出るほど既出
- 78 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 17:51:52 ]
- 懐かしいコピペだね
- 79 名前:デフォルトの名無しさん [2008/10/22(水) 20:17:00 ]
- 定数探索の規則が謎なんだけど、これどういうこと?
module Foo module Bar; end end module Foo module Baz p Bar # => Foo::Bar end end module Foo::Baz p Bar # => uninitialized constant Foo::Baz::Bar (NameError) end
- 80 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 20:25:43 ]
- module式の1つ外側に探しに行ってるように見える
- 81 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 20:53:42 ]
- Foo::Baz のほうはネストの外側に Foo がないので探索にひっかからないのよ。
module Foo module Bar; end end module Foo module Baz p Module.nesting # => [Foo::Baz, Foo] end end module Foo::Baz p Module.nesting # => [Foo::Baz] end
- 82 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 20:59:15 ]
- それはModuleだからで、仕様?
- 83 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 02:05:01 ]
- classでも同じで、仕様。
- 84 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 09:49:27 ]
- 日本語spam filterでrubyで書かれたものがあるそうなのですが
読みやすいコードになっているものなのでしょうか
- 85 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 09:51:51 ]
- あのへんはジャンル的に小難しいから、言語レベルはあまり影響しないんじゃないかな
理論を知ってるかどうかに依存すると思う
- 86 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 18:26:11 ]
- RubyでUnicodeの正規化(NFKDだとか)するにはどうすればいい?
ちょっとぐぐってみたけどこのライブラリのこの関数でできるよ!みたいのが わからなかった。 1.9はきっと標準でできるのだろうけど、1.8でどうすればいいか知ってたら教えて。
- 87 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 20:15:48 ]
- $KCODE = 'u'
require 'active_support/multibyte' ActiveSupport::Multibyte::Handlers::UTF8Handler.normalize("Python")
- 88 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 02:46:57 ]
- >>87
それは具体的には何をやってくれるわけ? normalizeというだけじゃ特定できんよ。
- 89 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 05:09:09 ]
- 「UTF8に正規化」って言ったら特定できるだろ
あとはドキュメント api.rubyonrails.org/classes/ActiveSupport/Multibyte/Handlers/UTF8Handler.html#M000606
- 90 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 10:06:38 ]
- >>89
Unicodeの正規化は一種類じゃない Unicode Normalization Forms www.unicode.org/unicode/reports/tr15/
- 91 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 10:09:16 ]
- ドキュメントを読まないバカは死ねばいいのに
- 92 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 15:48:38 ]
- >89
> 「UTF8に正規化」って言ったら特定できるだろ 何に特定できるって?
- 93 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 19:19:45 ]
- 英語読めない人と英語読めるのにドキュメント読まない人がいるんでしょうか?
- 94 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 19:50:36 ]
- うっかり「特定できる」なんつってしまって引っ込みがつかないバカがいるだけ。
しかもわざわざ余計なこと書いて自分で傷口広げてる。
- 95 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 00:44:24 ]
- >>94
ドキュメント読めば特定できるけど,そういう意味じゃないんか? Returns the KC normalization of the string by default. まあ自分は88でも89でもないしどうでもいいんだけど ただただ正規化メソッドが用意されてることに驚いた
- 96 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:03:01 ]
- オプションで正規化方法を指定できるんだな。
- 97 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:20:54 ]
- ファイル処理について質問です。
open(filename){|f| puts f.readlines[1, 10] puts f.readlines[20, 30] } とすると、readlines[20, 30]がnilになります。 原因は、readlinesメソッド終了時にブロック f が閉じられるからのようなんですが、 readlineメソッド呼出し後にブロックに戻ってくる方法はあるのでしょうか?
- 98 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:29:07 ]
- >>97
>IO が既に EOF に達していれば空配列 [] を返します。 というか、再利用しようよ。 open(filename){|f| a = f.readlines puts a[1, 10] puts a[20, 30] }
- 99 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:30:07 ]
- IOは読み込み位置を覚えていて、次はその続きから読もうとする。
readlinesは最後まで読んでしまうから、覚えてる位置は「最後」だ。 最初から読み直したいのなら、f.rewindを呼んで巻き戻す。
- 100 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:36:17 ]
- >>98-99
解決しました。助かりました^^
- 101 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 23:06:16 ]
- ttp://oshiete1.goo.ne.jp/qa4428538.html
ヨドバシドットコムの大規模障害理由 質問者:timeout25 大手ECサイトのヨドバシドットコム( yodobashi.com/ )が、10/21の サイトリニューアルから大規模な障害を起こしています。 どうやら今回のヨドバシドットコムリニューアルはCMS導入が目的で、 キノトロープスリーイントという会社が請けたようですが、実際のところ 何が原因でこうなっていると推測されますでしょうか?
- 102 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 04:28:35 ]
- >複数行コメント
>#| から |# までがコメントです。ネストさせることが可能です。 いいなあ
- 103 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 11:28:49 ]
- rcairoのpango関係のメソッドはどの資料を見ればいいの?
rcairoにもruby/pangoにも記述なさそうなんだけど。
- 104 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 13:01:48 ]
- Ruby方面には資料がなさそうだったのでPango本体のドキュメントみてメソッド名を当て推量した。
- 105 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 13:07:49 ]
- よくわからんがソースは読めないのか?
- 106 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 16:34:07 ]
- Matzのお墨付き
プログラミング言語 Cyan pc11.2ch.net/test/read.cgi/tech/1225138340/
- 107 名前:デフォルトの名無しさん [2008/10/28(火) 16:43:15 ]
- Ruby 1.9.1 preview 1 アゲ
- 108 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 16:53:06 ]
- 確かに筋は良さそうな感じはする
でもmatzってLisp系の強力なマクロには懐疑的じゃなかったっけ?
- 109 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 17:41:14 ]
- マクロはなんでも出来すぎるとか言ってたね。
でも昨今のDSLブームでRubyの文法の融通きかなぶりも認識してきた節もあるので 改宗したのかも。
- 110 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 17:44:48 ]
- Rubyはむしろ融通効き過ぎなぐらいだと思うが
- 111 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 19:42:32 ]
- 札幌Ruby会議01 (2008-10-25)
www.nicovideo.jp/mylist/9138553
- 112 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 19:45:43 ]
- マクロ最強!
#define ++ += 1
- 113 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 20:03:16 ]
- Lispは「融通がきく」
Rubyは「融通をきかせてる」
- 114 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 21:32:03 ]
- >>106
よお中村、元気か?
- 115 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 22:02:37 ]
- >>102
なにそれ?
- 116 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 02:37:54 ]
- Cyanのコメント
- 117 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 07:17:18 ]
- CLと同じでしょう。
=begin/=endでいいじゃんとは思うけど
- 118 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 08:07:57 ]
- >>110
そりゃプログラミング言語として与えられたままを使うだけに限った話。 DSLを考えるときには全然効かないんだよ。
- 119 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 08:12:19 ]
- >>116
さんきゅー
- 120 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 15:27:11 ]
- 引数がStringだった場合はキーを付け足してHashにする(param = {:name => param} みたいな)
引数がHashだった場合はてきとーにキーを見てぶん回す という最近よくある感じの処理をする場合、引数がStringかどうかみたいなのはどうやって判定すべき? is_a? とか instance_of? とか
- 121 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 15:31:20 ]
- is_a? kind_of?
- 122 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 19:31:51 ]
- www.rubyist.netおつとる
- 123 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 20:06:37 ]
- >>120
最近では respond_to? で、必要なメソッドの有無を調べるのも流行らしいぞ
- 124 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 20:23:01 ]
- each の存在を調べて String#each の存在でハマるのはもうお約束の域
そして 1.9 対応で悩む
- 125 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 20:25:44 ]
- case arg
when String when Hash
- 126 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 20:43:44 ]
- >>125
それは is_a? だ
- 127 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:00:35 ]
- 実体が is_a? でも、そう書くか case-when で書くかは大きな違いだ
- 128 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:25:49 ]
- 引数に(key => value)で特別扱いされるのはHashなんだから
is_a? 使うにしてもHashか、そうでないかっていう分岐にしたほうがよさげだと思う。
- 129 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:31:31 ]
- CodeZineにPythonカテゴリがないのっておかしくね?
お前らなんか妨害工作してるだろ。
- 130 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:35:25 ]
- ttp://codezine.jp/article/tag/223
- 131 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:38:42 ]
- 実体は === だろ
StringとHashでそれぞれ違う処理するなら俺も>>125にするかな でも>>120の場合ならこう書く param = {:name=>param.to_s} unless param.kind_of?(Hash)
- 132 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:45:18 ]
- すまん、クラス、モジュールの === は kind_of?(つまり is_a?) と同じだった
- 133 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 21:48:24 ]
- qb5.2ch.net/test/read.cgi/operate/1206636885/657
強制ID実装を駄目元で頼み込んでみた。 もし賛同してくれる人がいたら同意のレスつけてください。
- 134 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 10:39:11 ]
- >>133
おまえがIDさらせや。
- 135 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 17:45:48 ]
- p 133.id
- 136 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 18:30:44 ]
- => nil\(^o^)/nil
- 137 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 22:24:07 ]
- ext/dlのバグ修正、ruby-1.8.xにも入れてくれないかねえ。
- 138 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 22:56:29 ]
- どのrevision?
- 139 名前:デフォルトの名無しさん [2008/10/31(金) 23:47:40 ]
- レポジトリでみてみたけど違いが生じたのがsubversionへの移行前らしくてリビジョンわかりません。
問題は1.9ではNUM2PTRになってるものが1.8.xの方はDLNUM2LONGのまま残ってて アドレス等の値を符号つき整数として扱ってしまっているところです。 これがために1.8ではDL::Symbol.newなどに最上位ビットが1のアドレス値を直接渡せません。
- 140 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 01:13:22 ]
- 1.9のってruby/dl2でしたっけ?
低レベルな書き方したら1.8と互換性無くて… ruby -rdl -e "DL.dlopen('user32')['EnumWindows', '0PL'].call( DL.callback('IL'){|hwnd2| puts '%08x'%[hwnd2];-1}, 0 )" みたいなの あと、mingw32版のruby1.8だと上のが落ちるんですよね mswin32版ruby1.8だと大丈夫なんですけど
- 141 名前:デフォルトの名無しさん [2008/11/01(土) 01:35:20 ]
- 1.9で1.8と違う添付ライブラリってリファレンスマニュアルとかドキュメントあるんですか?
- 142 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 02:18:00 ]
- Ruby会議での青木さんの話を聞くと、
来年のRuby会議までには標準ライブラリのリファレンスが完成しそうなんだとか というわけで来年には手が回るんじゃ…… そういえば、Programming Rubyの第三版に1.9対応リファレンスが付くのかね?
- 143 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 11:54:12 ]
- ほんと青木さんとるりまチームには頭が下がるな。
頑張って欲しい。
- 144 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 18:31:41 ]
- なにさまだよ
- 145 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:24:52 ]
- るりまです
- 146 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:59:51 ]
- そっか、「がんばって欲しい」は「ご苦労さま」と同じか。
- 147 名前:デフォルトの名無しさん [2008/11/02(日) 13:38:43 ]
- 設計の基本ができてねぇなぁ!!!!!
よいツール教えたる これでガンバリなぁ www.digitalassist.co.jp/pw/page010.htm
|

|