[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 16:30 / Filesize : 142 KB / Number-of Response : 667
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

UNIXプログラミング質問すれ Part8



1 名前:970 [2006/05/18(木) 18:56:16 ]
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

前スレ
Part7 pc8.2ch.net/test/read.cgi/tech/1127373405/
Part6 pc8.2ch.net/test/read.cgi/tech/1116908090/
Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/
Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 pc2.2ch.net/tech/kako/992/992057422.html

Part3のミラー
makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2のミラー
makimo.to/2ch/pc5_tech/1055/1055110889.html


321 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 07:58:39 ]
# cat seq
#! /bin/sh
if [ $# -lt 1 ]; then
echo missing operand 1>&2
exit 1
elif [ $# -gt 3 ]; then
echo extra operand 1>&2
exit 1
elif [ $# -eq 1 ]; then
FIRST=1
INC=1
LAST=$1
elif [ $# -eq 2 ]; then
FIRST=$1
INC=1
LAST=$2
elif [ $# -eq 3 ]; then
FIRST=$1
INC=$2
LAST=$3
fi

n=$FIRST
while [ "$n" -le "$LAST" ]; do
echo "$n"
n=`expr "$n" + "$INC"`
done


322 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 21:07:18 ]
皆さん考えてくださってありがとうございます。

考えてくださっているのですが、

IFやFOR等は使っちゃだめみたいなんです。

記述は、

#!/bin/bash

while [ ]
do
done

のような記述のみでつくれっていわれてるんです。

whileは自動的に表示結果に改行が入ってしまいますよね?
その改行をなくすにはどうしたらいいんでしょうか?

323 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 21:38:47 ]
宿題ですか。

324 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 22:00:28 ]
$ n=1;while test $n -le 9; do m=1;while test $m -le 9; do echo -n `expr $n '*' $m` ""; m=`expr $m + 1`; done; echo; n=`expr $n + 1`; done

echo -nを使う

325 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 22:07:03 ]
正直、宿題です orz

326 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 22:33:04 ]
echo -nを使っている状態で、改行させるにはどうしたらいいですか?

327 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 23:03:53 ]
echo -n "hoge" "
" "hage"


328 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 10:16:53 ]
>>326
-nを付けない。

329 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 10:50:33 ]
\n



330 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 13:16:41 ]
ありがとうございました。
無事、宿題を終えました。

色々と教えてくださった方々感謝します。

331 名前:デフォルトの名無しさん [2006/10/02(月) 23:08:27 ]
だれか教えて。
Makefileで環境変数(PATH)を変更したいのです。
現在設定されているPATHの先頭に/aaaを追加するには
どう記述すればよいですか

332 名前:デフォルトの名無しさん mailto:sage [2006/10/02(月) 23:52:36 ]
>>331
PATH=$(PATH):/aaa

333 名前:デフォルトの名無しさん mailto:sage [2006/10/02(月) 23:55:44 ]
PATH=/aaa:$PATH

334 名前:331 [2006/10/03(火) 00:18:02 ]
ありがとう^^
試してみます。

335 名前:デフォルトの名無しさん mailto:sage [2006/10/03(火) 09:41:22 ]
>>333
括弧つけろよ。

336 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 01:51:39 ]
>>321って何?

337 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 01:59:02 ]
>>336
動かしてないけど、連続した数の列を吐くスクリプトだな。

その上にある質問(>>317)への回答(>>318)に出てきたGNUのseq(やBSDの
jotだっけ?)は移植性がないので、スクリプトとして作ったわけ。

スクリプトのはじめの長いif文は引数の数によって、開始値・終了値・刻みを
セットしている。(case $# in...のほうが見やすいかも)

338 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 16:02:10 ]
esac だけはいまだに慣れない

339 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 16:12:40 ]
caseだとこうか。

case $# in
1) FIRST=1; INC=1; LAST=$1;;
2) FIRST=$1; INC=1; LAST=$2;;
3) FIRST=$1; INC=$2; LAST=$3;;
*)
[ $# -lt 1 ] && echo missing operand 1>&2
[ $# -gt 3 ] && echo missing operand 1>&2
exit 1;;
esac



340 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 10:21:44 ]
マイナスになることはないので、0)と*)でいいのではないか?

341 名前:デフォルトの名無しさん [2006/10/08(日) 01:31:24 ]
すみません、突然なんですけど
昨日プログラミングの講義で課題を出されて
eのx乗を求めるプログラムを作れと言われて
困ってます。昨日からずっと考えてるんですが
全くわかりません。
どなたか教えてもらえませんか?


342 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 01:48:32 ]
pow関数使ってもいいのか?

343 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 01:49:04 ]
昨日からずっと考えてるって…
何を、どんな知識をベースに考えてたんだ?

単純に、こういうことなんじゃないのか?
www.google.co.jp/search?hl=ja&q=%22math.h%22+log&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja


344 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 02:08:30 ]
>>341
UNIX関係あるのか?
math.h使わないとして普通に考えても
0乗なら 1
1条なら e
x乗なら e^x
をしたらいいだけじゃないのか?

345 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 02:16:04 ]
xが整数とは限らないとちょっと面倒かも
つか宿題スレ池

346 名前:デフォルトの名無しさん [2006/10/08(日) 02:22:40 ]
>>344
LINUXでやってます。
プログラミングの知識が乏しくて
プログラミングをかけないんです。
#include <math.h>
double log(double x);
って感じで書くんですけど・・・
その後がいまいちわからなくて・・・

347 名前:344 mailto:sage [2006/10/08(日) 02:27:22 ]
>>346
入門書読め

乗算以前にC言語の構文が理解できてない

348 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 02:41:50 ]
eが自然対数の底ならlog(x)じゃなくexp(x)でそのものずばりだろ。

349 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 03:13:13 ]
exp(x)関数使わせるだけの演習なの?



350 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 03:16:42 ]
構文が理解できてないようだから、構文の勉強中じゃないの?

351 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 05:41:59 ]
金払ってまで勉強する領域で講義もろくに聞いてないとは。

352 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 06:06:21 ]
俺も思う。

金払って勉強してるのに、なぜ答えてくれるかどうかもわからない2chなんかで聞くのか。
金払ってるんだから講師にでも聞けよ

353 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 10:22:06 ]
勉強でも遊びでも、学生時代の経験ってのは大切だ。

市民権のある立場を買ってると考えればよい。

354 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 13:26:51 ]
留学生には市民権はないぞ。
市民権というのは、citizenshipの訳語で、
政治参加の権利を持っている人のことだぞ。
ギリシャのポリス市民から来ている。


355 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:01:33 ]
>>354
どうでもいいよ。定義なんて。

356 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:07:05 ]
>>355
どうでもいいよ。お前の意見なんて

357 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:11:18 ]
>>356
じゃあわざわざwikipedia書くような労力払わんで下さいよ。

358 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:11:39 ]
キミタチキモイヨ

359 名前:デフォルトの名無しさん [2006/10/09(月) 13:21:17 ]
GCCとMakeの質問です。

Apacheモジュールからpostgresへつなげる処理を
作っているのですが、
Makeしたときに"closesocket"関数がpostgres.hとport.h内で再定義(redefined)された
という警告が出力されます。
こういう場合、何か回避するよい方法がありますでしょうか?

今のところpostgres側のヘッダ(port.h)に
#define closesocket pg_closesocket
とかすればよいのだろうかと考えていますがどのような影響があるかわからず躊躇しています。

・Make時のログ
In file included from /usr/local/include/postgresql/server/c.h:822,
from /usr/local/include/postgresql/server/postgres.h:48,
from mod_blog.c:9:
/usr/local/include/postgresql/server/port.h:273:1: warning: "closesocket" redefi ned
In file included from /usr/local/include/apache/httpd.h:29,
from mod_blog.c:2:
/usr/local/include/apache/ap_config.h:1084:1: warning: this is the location of t he previous definition
・ソースファイル(ヘッダ部)
#include <string.h>
#include "httpd.h"
#include "http_config.h"
#include "http_protocol.h"
#include "ap_config.h"
#include "http_log.h"
#include "libapreq/apache_request.h"
#include <postgres.h>
#include <libpq-fe.h>
<略>



360 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:22:35 ]
警告出したくないだけなら/dev/nullにパイプしろ

361 名前:359 [2006/10/09(月) 13:29:00 ]
訂正です。
X Makeしたときに"closesocket"関数がpostgres.hとport.h内で再定義(redefined)された
○ Makeしたときに"closesocket"関数がap_config.hとport.h内で再定義(redefined)された

>>360
いやそれだと意味が...;

362 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:40:11 ]
>>359
自作モジュールでclosesocketを使わなければうまく行く。
(と言うか問題があればリンク時にこけるので取りあえず無視して良い)

363 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:40:14 ]
>>361
どう回避したいのかいってないから、警告を表示したくないと思われても仕方ない罠

364 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:41:04 ]
>>363
知らんのなら出てくんなや。と言う正論。

365 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:51:04 ]
知った上で書き込めるのはエスパーだけ!

366 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:53:03 ]
>>365
そこそこ回答が上がってるわけですがw


367 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:56:45 ]
じゃぁ、それで満足しておけよw

368 名前:359 [2006/10/09(月) 13:57:12 ]
>>362
>>と言うか問題があればリンク時にこけるので取りあえず無視して良い)
なるほどー
今のところ、モジュール自体は動いているし
Makeがエラーを吐いてとまることもないので
実用上問題はないかも・・・と
とりあえず
postgresの関数の内部(PQfinishとか接続を切る系?)
などの中で該当関数が使われてないかをみて影響範囲を絞り込んでみます。
ありがとうございます。

>>363
そうですねー
重複しているclosesocket関数が、内部的に衝突・上書きされずに共存する回避の仕方
がないかということです。

369 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 14:17:22 ]
#ifndef __WIN32__
#define closesocket close
#endif

みたいな感じだと思うけどねー。




370 名前:デフォルトの名無しさん [2006/10/10(火) 14:59:06 ]
任意の長さの文字列データをファイルから読み込み、辞書順に並び替えて最終結果のみを表示するプログラミングを作成せよ。ただし、データは改行で区切られており、文字列の最大長を64、データの最大個数を1000とする。
っていう問題が学校で出たんですけど、誰か教えてくれませんか。

371 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 15:00:13 ]
>>370
先生に聞け

372 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 15:20:36 ]
辞書順の定義が謎だね。出題者(センセ)は分かってるんだろうか。
アルファベットだけでも aAbBなのかAaBbなのかabABなのか
ABabなのかはロカールによって違う。

ロカール指定で済むなら、strcmpの代わりにstrcollを使えば
LC_COLLATEを見てくれるので話ははやいが。

373 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 16:01:45 ]
UNIX関係ない質問に答えている人って馬鹿なんでしょうか?

374 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 16:04:31 ]
関係ない上に重箱の隅w

375 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 22:22:53 ]
釣りだろ。373に答える奴は馬鹿かとも言ってるわけだから。

376 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 02:34:40 ]
>>370
system("sort");

377 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 04:56:51 ]
>>376おそれいった。

378 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 23:15:38 ]
>>文字列の最大長を64
ぬるい。
どうせなら文字列は可変長、リストに格納しつつソートとか
のほうが実践的

379 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 23:51:43 ]
>>378
実戦で底までせなあかん局面がない。



380 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 01:00:06 ]
メモリ資源の乏しい計算機でも実行できるというメリットがある

381 名前:デフォルトの名無しさん [2006/10/19(木) 11:41:06 ]
コマンド実行で誤って*******(アスタリスク7文字)を入力したら
subjectの入力となりました。

mailコマンドを実行したわけでもなく原因がわかりません。

ご教授よろしくお願いします。


382 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:46:27 ]
echo ******* とかやってみ。たぶん先頭にMailがいるんじゃないか?


383 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:53:58 ]
>>381
鼬害。シェルにおける'*'の意味を考えれば、何が起きたか判るはず。

384 名前:デフォルトの名無しさん [2006/10/19(木) 22:05:28 ]
>>383
それを説明しろ
できねんだろ?

385 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 00:17:47 ]
ありゃりゃ?そこにからむのか?w

386 名前:デフォルトの名無しさん [2006/10/21(土) 22:48:10 ]
すみません。どなたか教えてください。

cout << "こんにちは" << endl;

を含むコードをコンパイルし、実行したところ、"こんにちは"の部分が文字化けして、読めません。
OSはCent OS4.3です。

387 名前:386 [2006/10/21(土) 22:49:39 ]
どうしたら、日本語の出力ができるようになるんでしょうか?

388 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 23:03:29 ]
>387
ロケールを設定。
ttp://www.google.co.jp/search?q=C%2B%2B+locale

389 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 11:34:31 ]
常にウインドウを最前面に配置したいのですが、
それはどのようにして実現できるのでしょうか?



390 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:06:50 ]
>>389
ウィンドウ環境によって異なります。

391 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:42:58 ]
>>390
汎用的な方法は無いのでしょうか?


392 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:00:05 ]
>>391
window managerにそう指定する。

393 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:19:10 ]
>>392
どこが汎用的なんだ?

>>391
やったことないけど、Windowが隠されたら最前面にマップするようにしたら?


394 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:54:08 ]
> Windowが隠されたら最前面にマップ
2つのアプリがそれやり出したらとっても楽しいことになりそうだな

395 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:54:25 ]
そもそもXWindowかどうかさえ判らないのに汎用的な方法なぞあるわけがない。

396 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:57:40 ]
>>394
重なったWindowのプロパティ見れば?

397 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:01:27 ]
>>396
素朴な疑問だが、どんなウインドウシステムを仮定している?

398 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:10:56 ]
>>397
汎用的な方法なんだから何も仮定してるわけないだろ。
それでプロパティってのが何のことなのかはさっぱりわからんが

399 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:16:43 ]
XならWMに対してポリシーのヒントみたいのん設定するんじゃないっけ
あとはWM次第みたいな



400 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:22:38 ]
>>399
それ>>392じゃないの?
違いは「Xなら」と「あとはWM次第」って予防線?

401 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:26:03 ]
ああ、そうなんだけど、なんか妙な方向に流れてるから多少具体的に言ってみました

402 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 17:50:02 ]
環境がわからないのに汎用的な方法もクソも無いだろうに…

403 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 20:27:21 ]
>>402
環境を選んでる時点で汎用ではないだろ

404 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 23:08:26 ]
ウィンドウのない環境まで想定したら汎用的な方法などありえない、で終わってしまうな

405 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 05:06:24 ]
cursesならキャラクタ端末でもウィンドウが

406 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 07:44:01 ]
質問した奴はげんなりしてるだろうなw

407 名前:デフォルトの名無しさん [2006/10/26(木) 15:31:08 ]
Xのプログラムで質問です。

外部からの指示により、スクリーンサイズと同じサイズの背景透
過なウィンドウを作成したいのですが良い方法はありませんか?

やりたいことは、画面上は他のウィンドウが表示されているけど
画面をクリックしたらそのイベントを他のウィンドウに渡さず透
過なウィンドウで受けとって座標位置にあった処理をしたいので
す。

デプス1のピクスマップをつくってXShapeCombineMask()を使
用したら透明なウィンドウはできたのですが、画面クリックする
と透過された他のウィンドウがイベント拾っちゃいました(TT

408 名前:386 mailto:sage [2006/10/29(日) 15:15:49 ]
>>388
レスが遅くなりましたが、ありがとうございます。
なお、ロケール設定後も文字化けして表示してしまって
いました。その後、SSHクライアントが日本語に対応して
いなかったためだと分かり、やっと解決しました。

409 名前:デフォルトの名無しさん mailto:sage [2006/10/29(日) 18:07:23 ]
>>407
xwininfoのソース嫁



410 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 16:26:12 ]
>>409
それは XGrabPointer使えってことだよね。>>407 が考えていることとは微妙に違う気がする。


411 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 19:49:03 ]
>>407
XShapeで作成したウィンドウは、下のレイヤのウィンドウを透過しているのではなくて、ビットマスクによって自身の
ウィンドウの形状を変更(クリッピング)している。ウィンドウが無いとみなされているので、下のレイヤのウィンドウに
イベントが通知される。

参考になりそうなのはkinput2等、IMのソース。
・class=InputOnly, override_redirect=True なウィンドウを作成すると、非表示のウィンドウでマウス入力が取れる。
・非表示のウィンドウはフォーカスを持たないため、キー入力を取るためには別途 XGrabKeyboard すれば桶。


412 名前:デフォルトの名無しさん [2006/11/02(木) 22:15:24 ]
TCP サーバーソケットで、受信メッセージからDestination IP addressの取得するのは、どうすればよいでしょうか?
一応今までは、UDPだったので、RAWソケットを使ってIPパケットを見ていたのですが、
今度、TCPでもやることになってしまいました。
RAWソケットを使わず、取得する方法は無いでしょうか?



413 名前:デフォルトの名無しさん [2006/11/02(木) 22:26:55 ]
>>412
Packet Socket

414 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 22:30:26 ]
acceptのときに得られるんでない?

415 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 22:41:49 ]
>>412
×受信メッセージから
○受信ソケットから

getpeeraddr(2)



416 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 23:35:44 ]
getsockname

417 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 10:27:33 ]
>>412
質問を明確にしたほうがいいんじゃない?
受信パケットのDestinationってことは、自ノードのアドレスってことだよね
複数アドレスがある場合に特定する方法があれば俺も知りたい(以前調べてわからんかった)

418 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 11:08:42 ]
>>417
ギャグですか?

419 名前:412です [2006/11/04(土) 14:18:42 ]
すみません。レス遅れました。
getsocknameで、自分の情報(受信ソケットの場合Destination IPを取得)ということですね。
どうもありがとうございます。

>>417
そうです。受信パケットのDestinationってことです。もう少しこの部分を強調すれば
良かったですね。

>>413
パケットソケットだと、RAW ソケットになるとおもいますが、私の勘違い?



420 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 12:20:08 ]
ファイルやディレクトリが存在するかどうかを調べるにはどうしたらよいでしょうか?


421 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 12:40:52 ]
stat






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

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

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