【初心者歓迎】C/C++室 Ver.105【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
2019/04/25(木) 06:54:38.08ID:6xUIrXDu
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
http://codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1545944692/
2019/09/17(火) 23:23:37.07ID:f5N3Fp86









2019/09/17(火) 23:24:00.17ID:vrvr50SL
dynamic_cast<Cat>(array[0]) == NULLだったらarray[0]はネコではない
2019/09/17(火) 23:24:31.61ID:f5N3Fp86
          || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
          ||. =ねらー三原則=  ||
          || 1.助けない      ||
          || 2.教えない 。    ∧_∧  いいですね。
          || 3.関わらない\ (゚Д゚,,)
          ||________⊂⊂ |
  ∧ ∧    ∧ ∧    ∧ ∧    | ̄ ̄ ̄ ̄|
  (  ∧ ∧ (   ∧ ∧ (  ∧ ∧ |      |
〜(_(  ∧ ∧ __(  ∧ ∧__(   ∧ ∧ ̄ ̄ ̄
  〜(_(  ∧ ∧_(  ∧ ∧_(   ∧ ∧  は〜い、先生。
    〜(_(   ,,)〜(_(   ,,)〜(_(   ,,)
      〜(___ノ  〜(___ノ   〜(___ノ
2019/09/17(火) 23:24:40.10ID:vrvr50SL
dynamic_cast<Cat*>(array[0]) == NULLだったらarray[0]はネコではない
289デフォルトの名無しさん
垢版 |
2019/09/17(火) 23:27:47.60ID:iQJ8U52u
>>284
理解しました。
そのif文つかうとOpenMP使うときにロードが均等に分散されないので、
dogだけの配列欲しいですね。
2019/09/17(火) 23:41:03.11ID:4Zel//hf
>>289
それなら条件に該当するエントリのポインタを抜き出した配列を作ってループすればいいんじゃないか?
ループ内の処理が並列化する価値があるくらいコストかかるなら、ポインタを抽出してコピーするコストは無視できるかと思われる。
291デフォルトの名無しさん
垢版 |
2019/09/18(水) 00:08:00.90ID:yNiXaOMn
>>290
ありがとうございます。
それやってみます。
292デフォルトの名無しさん
垢版 |
2019/09/18(水) 12:06:57.92ID:L8SHYgAR
>>266
C#スレでマルチしてないかお前
293デフォルトの名無しさん
垢版 |
2019/09/18(水) 20:26:23.65ID:yNiXaOMn
>>292
してないやでー
2019/09/22(日) 11:43:54.30ID:LQCFANDg
> Animal *array[10] = {NULL};

20年以上前に配列要素を一つ以上書かないといけない処理系があったな
タイムスリップでもしてきたか
295デフォルトの名無しさん
垢版 |
2019/09/22(日) 11:53:00.80ID:y42gsAly
Animal *array[10] = {p0, p1, p2};
だとすると
array[0] 〜 array[2] は p0〜p2 になるが
array[3] 以降は全部 NULL で FA?
2019/09/22(日) 16:44:01.11ID:dRs63Jnx
>>295
引数の無いコンストラクター呼ばれる
297デフォルトの名無しさん
垢版 |
2019/09/22(日) 16:45:05.27ID:zrmuC8G0
char *array[10] = {p0, p1, p2};
だとすると
array[0] 〜 array[2] は p0〜p2 になるが
array[3] 以降は全部 NULL で FA?
2019/09/22(日) 17:27:15.07ID:kTa1SMwh
>>296
ポインタだぞ?
2019/09/22(日) 18:52:04.08ID:9/tlWbjv
>>294
Cだと今でもダメだから、それ見たんじゃないの?
2019/09/22(日) 19:39:28.11ID:KmeF3kAh
>>298
ポンタってローソンのカード?
2019/10/01(火) 17:46:09.39ID:yQHk6Pyq
Windows の普通のソフトのインストーラは Program Files 以下に適当なフォルダを作ってそこにファイルをまとめて入れるけど、
コマンドラインアプリの場合ってどうしてる?
GUI アプリと同じようにフォルダに突っ込んで環境変数 PATH を設定するってのが標準的なやり方だと思うけど、
そういうのが増えてくると PATH が長大になって嫌な感じなので、なんかうまい方法ってないもんかな?

C/C++ とは直接の関係がなくてスマソ。 どのスレがベストかわからんかったもんで。
2019/10/01(火) 19:01:46.51ID:HsilaFth
環境変数なんて入れずに叩くときにフルパス入れりゃいいだけでは?
2019/10/01(火) 19:48:41.05ID:yQHk6Pyq
>>302
フルパスを前提にすると連携しづらい場合が出てくるんよ。
「このバッチファイルを実行するにはこのソフトとこのソフトを入れてね!」
みたいなことをやろうとすると、想定してたのと違うフォルダにインストールしてるだけで破綻してしまう。

32bit のアプリケーションって 32bit 版の Windows だと Program Files に入るけど
64bit 版の Windows だと Program Files (x86) 入るようにするのが基本的な作法じゃん?

それだけでも違ってしまうけど
システムドライブとは違うドライブにアプリケーションをインストールしたりする運用をやってる人は意外にいるので、
インストール先を選択させずに固定するってのも縛りが強いかなぁと思うし。

どこにインストールしてでも同じように使えるようにするには PATH くらいしか選択肢がなくなる。
でも嫌。 っていう話。
2019/10/01(火) 20:00:47.20ID:gawiB1ps
20年以上前からある問題だな
Windowsではその辺は未だにグダグダだと認識している
2019/10/01(火) 22:13:00.30ID:sghBprd5
>>303
設定でその外部アプリへのパス指定できるようにすれば?
インストール先固定、環境変数追加、レジストリ追加よりユーザーに指定させるほうが個人的には好き
というかこの三種のような方法をとるアプリはそもそもインストールを躊躇する
2019/10/01(火) 23:27:11.07ID:D6lr/hhZ
コマンドラインアプリでコンソールから起動 バッチファイルから呼び出し etc
実行ファイルの検索順位に依存しまくるからにゃぁ
2019/10/01(火) 23:54:08.52ID:yQHk6Pyq
app paths をコマンドラインでも適用してくれよって思ってる。
308デフォルトの名無しさん
垢版 |
2019/10/02(水) 12:47:26.92ID:55+aQRnY
>>301 >>303
C:\bin
309デフォルトの名無しさん
垢版 |
2019/10/02(水) 12:49:56.03ID:55+aQRnY
> 32bit のアプリケーションって 32bit 版の Windows だと Program Files に入るけど
> 64bit 版の Windows だと Program Files (x86) 入るようにするのが基本的な作法じゃん?

> それだけでも違ってしまうけど

違わない
32bitアプリケーションからは
Program Filesしか見えない
実際はProgram Files (x86)をアクセスしてる訳だが
そんなことは32bitアプリケーション側は知らなくて良いし知らない方が良い
310デフォルトの名無しさん
垢版 |
2019/10/16(水) 18:22:59.77ID:imXCztCz
class A{
public:
B b
}

class B{

}

の時、Aのコンストラクタなどで b = new B; とすると、
このbはAのクラス内で使えますが、Aのデストラクタが走る時に、
bも一緒に消えるのでしょうか。
それとも別途に delete b が必要なのでしょうか。
2019/10/16(水) 18:24:40.90ID:uv22jov9
Aのデストラクタにdelete bを書く
312デフォルトの名無しさん
垢版 |
2019/10/16(水) 18:27:03.37ID:imXCztCz
一緒に消えないのですか。どうもありがとうございました。
2019/10/16(水) 18:36:34.82ID:d1R3XcHH
>>310-312
A のコンストラクタ内で例外が送出されると delete b が実行されない可能性があるのでなるべくならスマートポインタを使うのが望ましいし楽。
2019/10/16(水) 18:43:49.83ID:6mvmnwRf
B b; と定義したなら、b = new B;が不要で、Aのデストラクタ実行時にbも一緒に消える。
B* b; と定義したなら >>311 だが、わざわざポインタで定義するのは
コピーコンストラクタ等々自前で定義しなきゃならんのでお勧めしない。
スマポならAのデストラクタ実行時にbも一緒に消えるけど、
shared_ptrはコピー時に共有されてしまうし、unique_ptrはコピーできなくなる。
315310
垢版 |
2019/10/16(水) 18:53:13.17ID:imXCztCz
なるほど。B* bで書いたつもりが間違ってました。
しかしA内でbを使い回すなら、B b の方が良さそうですね。
どうもありがとうございました。
2019/10/22(火) 20:10:13.74ID:+0Lq2R8m
C++相談室 part145
https://mevius.5ch.net/test/read.cgi/tech/1568362404/
から移住しました。
YappyCamという録画ソフトを作っています。
https://github.com/katahiromz/YappyCam
よろしくお願いします。
2019/10/23(水) 00:02:04.30ID:FSIo0WLO
多分スレチな話題だけど
高速化目的で固定小数点数クラス作って満足してた所に、コンパイラの設定で浮動小数点モデルをfastにしたら何倍も速度差つけられたんだが
どういう原理でそうなるのかわからない 調べても中々資料出てこないし
誰か教えて下しい
2019/10/23(水) 01:44:13.82ID:GER+FSVM
>>317
現代では浮動小数点はハードウェア (CPU) のサポートがあるので丸め方の一貫性とか捨ててめいっぱいに CPU の機能を利用したら速いよ。
2019/10/23(水) 02:19:12.55ID:DFr4VJRt
昔、インテルの一部のCPUにfloating pointの処理に不具合があって、それで高い精度が求められるプログラムでは、ソフトで対応できるようなコンパイラが作られたらしい(要出展?)。
2019/10/23(水) 02:24:10.56ID:DFr4VJRt
これだ。
https://ja.m.wikipedia.org/wiki/Pentium_FDIV_%E3%83%90%E3%82%B0
2019/10/23(水) 07:13:23.64ID:chxy1JWV
ARMのEABIとは逆方向の流れだな
2019/10/23(水) 09:00:32.48ID:FSIo0WLO
>>318-320
thx!
2019/10/23(水) 12:36:36.18ID:bxABcYeD
記憶媒体の性能を計測してみた。
https://github.com/katahiromz/YappyCam/blob/master/tests/diskrate/diskrate.cpp
SSDでデータを取得。
https://twitter.com/katahiromz/status/1186558848393285633
HDDでデータ取得。
https://twitter.com/katahiromz/status/1186848186737905664
https://twitter.com/5chan_nel (5ch newer account)
2019/10/23(水) 13:01:09.43ID:bxABcYeD
SSDは早い。400MB/sec近い。
HDDは遅い。100MB/secくらい。
音声に加えて画像も出力することを考慮すると、音声出力の実際の性能は50MB/sec以下だろう。
音声を最高の品質にすると、10msecごとに音声データがおよそ3900バイトあるようだ。1秒では390000バイト、390KB/secになる。余裕のよっちゃんだ。
2019/10/23(水) 13:08:27.27ID:DFr4VJRt
記憶媒体やOSはときどきフリーズすることがある。0.5秒フリーズしても耐えられるようにするには、390KB*0.5==195KB。
少なくともこれだけのバッファが必要になる。余裕を持って事前にリングバッファ400KBを用意することにする。
2019/10/23(水) 13:12:48.38ID:DFr4VJRt
一度にファイルに書き込むデータは100KBにする。このデータ量は小さすぎても性能が下がるし、大きすぎると流れが止まってしまう。
2019/10/23(水) 13:25:45.62ID:bxABcYeD
アプリ起動時に音声消費スレッドを起動する。イベントハンドルで音声データが車で待つ。イベントが来たら、音声データを少しずつファイルに吐き出して、消費する。全部消費したら再びイベントを待つ。これの繰り返し。
2019/10/23(水) 13:37:23.16ID:bxABcYeD
(間違いがあったら指摘してね、よろぴく)
329デフォルトの名無しさん
垢版 |
2019/10/23(水) 14:54:53.56ID:JzA6/vMp
引っ越したんなら質問も引っ越せよ
2019/10/23(水) 15:27:52.17ID:dG0kuu8/
>>328
ここはお前のメモ帳ではなく掲示板だ
2019/10/24(木) 20:49:36.30ID:hL+vNXS/
長く録画してると、画像と音声のタイミングがずれる。
WM_TIMERのせいか?
2019/10/24(木) 21:21:54.34ID:ZzyW2UAB
WM_TIMERの精度が低いから音ずれが起きている。
QPCと別スレッドで書き直し。
2019/10/24(木) 22:15:20.99ID:hL+vNXS/
std::chrono使ってみるか。
2019/10/24(木) 22:48:01.86ID:se7EzpzH
何のタイミングを作ろうとしてる?
リアルタイムに録画したデータをストレージに保存するんだよね?
2019/10/24(木) 23:08:40.74ID:ZzyW2UAB
スクリーンショットを定期的に撮るタイミングだよ。
2019/10/24(木) 23:14:06.35ID:ZzyW2UAB
どうもタイミングの累積誤差があって、ゲームのWinDepthで試すと動画では音が遅れるみたいなんだ。
2019/10/24(木) 23:17:05.32ID:se7EzpzH
録画した後、それを再生するとずれていくといこと?
それとも狙った時間でスクショをキャプチャできないという意味?
2019/10/25(金) 09:14:50.02ID:cKRHja93
>>336
WindowsMediaPlayer起動しながらやってみたらどうなる?
2019/10/25(金) 13:15:44.76ID:OgTxIR48
Visual Studio 2017だと音ズレはなくなった。
MSYS2のデバッグバージョンでは少しずつ音がずれる。
WinDepth のSTAGE 2にいくと0.5秒ほどずれる。
2019/10/25(金) 13:28:08.21ID:OgTxIR48
MSYS2のリリースバージョンでも音ズレなくなった。
ありがとうございます。

https://github.com/katahiromz/YappyCam/blob/master/YappyCam.cpp#L75
これがPictureConsumerThreadProc (映像消費スレッド)。

https://github.com/katahiromz/YappyCam/blob/master/YappyCam.cpp#L158
これがPictureProducerThreadProc (映像生成スレッド)。

次はパフォーマンスを出来る限り高めないといけない。
2019/10/25(金) 14:06:51.29ID:OgTxIR48
CreateThreadはCRTと一緒に使っちゃいけないらしいから、_beginthreadexで書き直しだ。
2019/10/25(金) 16:19:18.72ID:OgTxIR48
https://twitter.com/katahiromz/status/1187629168042708992
画面切り替え(フルスクリーンゲーム)のときにSegmentation faultが発生する。。。

まずいぞまずいぞ。。。
https://twitter.com/5chan_nel (5ch newer account)
2019/10/25(金) 16:30:53.82ID:OgTxIR48
https://twitter.com/katahiromz/status/1187632297601716225

これ見て原因わかりますか?
https://twitter.com/5chan_nel (5ch newer account)
2019/10/25(金) 17:01:41.65ID:OgTxIR48
PT_SCREENCAPにBITMAPチェックを入れたら直った。

画面にごみが残るのはどうにかならないかなあ?
2019/10/25(金) 18:50:20.70ID:VkouAEbH
フレーム落ちはしてないから、性能の問題ではない。たぶんフレームと音声のタイミングの違いだろう。音声の方が長い場合は音声を削ることも検討する。
2019/10/25(金) 18:53:10.78ID:cKRHja93
>>338はどうなんよ?
2019/10/25(金) 19:06:40.11ID:OgTxIR48
>>346
なんか意味あるの?

当たり前だが、フレームレートに枚数をかけ算すると、動画の時間が求まる。これを音声の長さと比較して音声が長ければ音声の先頭を削除。これでいってみるか。
348デフォルトの名無しさん
垢版 |
2019/10/25(金) 19:36:22.67ID:q8W1xqeq
あらかじめMediaPlayerを起動しておくと
あら不思議なぜか動作が軽い
っていうのは昔から有名な検証方法の一つ
2019/10/25(金) 20:00:49.22ID:VxINcxQ3
スレチのキチガイを飼い慣らすのは止めてください
2019/10/25(金) 20:38:50.75ID:StYWqeWG
どうせ過疎スレ
2019/10/25(金) 22:23:03.54ID:MULKQLsl
>>347
Windowsのタイマーはmsecのオーダーは出ない(Linuxもだ)
それしかビデオのタイミング作る手段がないならタイムスタンプ管理すべきだ
またPCではそもそもハードウェア的にビデオとオーディオは同期してる保証がない
その前提を踏まえてつくる必要がある
オーディオもビデオもキャプチャしたタイミングでタイムスタンプを取得して同様にファイルに保存する
再生するときにそのタイムスタンプを比較してビデオが±0.5フレームずれてきたら
フレームをスキップかリピートして調整する
オーディオを基準に考えるのがポイントだ
最後にWindows10では画面録画は標準機能だ
2019/10/25(金) 22:35:35.48ID:cKRHja93
>>347
とりあえずやってみたらいいのに
2019/10/25(金) 22:50:25.82ID:OgTxIR48
>>351
核心情報キタ―――(゚∀゚)―――― !!
ありがとうございます。
2019/10/25(金) 22:56:14.57ID:APY4ctz9
timeBeginPeriod使えで済む話だろう
2019/10/26(土) 11:07:21.59ID:Q5f3+aYX
YappyCam 0.9をリリースしました。
https://katahiromz.web.fc2.com/yappycam/ja
- パフォーマンスの改善。
- 音ズレを修正。
2019/10/26(土) 14:53:06.64ID:Q5f3+aYX
これで終わり、、、じゃないよ。
プラグインで時刻表示と猫耳ができるまで終わらないぞ。
2019/10/26(土) 15:23:17.18ID:a/Ne+y1n
蟻人間のらくがき帳になってしまった
2019/10/26(土) 15:30:57.98ID:Q5f3+aYX
プラグインを実装するには自作のPluginFrameworkを参考にする。
これもC++/Win32で書かれている。

PluginFramework
https://github.com/katahiromz/PluginFramework

拡張子は.yapでいいだろう。拡張子こそ違うが、プラグインファイルの中身はDLLファイルと同じ。LoadLibraryで読み込めるはずだ。
2019/10/26(土) 17:16:55.73ID:Q5f3+aYX
>>354
ありがとうございます。
2019/10/26(土) 22:31:16.45ID:Gui6HX0l
クラスの中の処理を別のプロセスのプログラムに行わせたいんですけどどのような方法があるでしょうか
64bit環境のプログラムにインターフェースのみを提供するクラスがあって、中の処理を32bitのプログラムに行わせたいです
クラスは状態を保持する必要があるので呼び出す度にプログラムを実行することはできません
2019/10/26(土) 22:31:33.65ID:Gui6HX0l
windows環境です
2019/10/26(土) 22:38:25.84ID:SyjizfQh
まずお前が何を試してどうだったか書いて
2019/10/26(土) 22:42:34.07ID:Q5f3+aYX
>>360
プロセス間通信
2019/10/26(土) 22:44:08.74ID:w/PE+z55
>>363
呼び出される側のプログラムはどのように待機するべきですか?
2019/10/26(土) 23:34:00.80ID:fKw1xQJ9
dllインジェクションの話?
2019/10/26(土) 23:43:30.80ID:0HLEEd3+
コマンドライン引数経由でファイルマッピングハンドルの値を受け取る、もしくはPostMessageでハンドルの値を受け取る。
クリップボードを使ってもいいし、ファイルを経由してもいい。
2019/10/26(土) 23:44:43.73ID:0HLEEd3+
WM_COPYDATAは生のデータを送信できる。
368デフォルトの名無しさん
垢版 |
2019/10/27(日) 17:20:04.24ID:IkTaChA0
自由に変更できるならsocket使ってTCP(UDP)portで待機
369デフォルトの名無しさん
垢版 |
2019/10/27(日) 17:20:36.84ID:IkTaChA0
ANTさんはNimやってない訳?
2019/10/27(日) 17:28:47.53ID:irXhIBVc
>>370
古くて枯れた技術を触っているから、マイナーな言語は使ってない。
2019/10/27(日) 19:33:52.69ID:irXhIBVc
最近はRustとElixirがブームらしいが、私は相変わらずC++。
2019/10/27(日) 22:03:41.19ID:cNZwDfUU
カメラアプリのプラグインを設計しないといけない。要件定義から。

OpenCVのcv::Matを受け取り、何らかの画像処理をする。今考えているのはフィルタープラグインと監視役プラグイン。
時刻表示フィルターと猫耳フィルターは必ず実装する。監視役は、何かが発生したら、管理者権限で保護されたコマンド列(Command*.bat)を実行する。
フィルターは処理の順序が大事だから、プラグインを順序付けしないといけない。
プラグインは自作のPluginFrameworkをチューニングして使用する。
2019/10/27(日) 22:11:26.78ID:cNZwDfUU
読み込んだプラグインは有効か無効かを選べる。プラグインの順序も変えられる。そこでプラグインを管理するダイアログが必要だ。
そのダイアログはメインメニューからアクセスできる。ダイアログからプラグインの名前やバージョン情報にアクセスできるようにリストビューを使用する。
読み込んだ全てのプラグインが有効であるとは限らない。有効なプラグインは、プラグインを表す文字列のリストで記録する。高速にアクセスするためにさらにプラグインのインデックスのリストを使用する。
2019/10/27(日) 22:34:37.57ID:cNZwDfUU
順序の変更には上・下ボタンを使用する。
有効・無効の切り替えはリストビューのチェックボックスを使用する。
時刻表示にはcv::putTextを使用する。
拡張子は.yapで決まり。exeと同じ場所に置く。
2019/10/31(木) 20:42:35.84ID:ssZYzg5C
YappyCamプラグイン実装。
https://github.com/katahiromz/YappyCam
https://github.com/katahiromz/YappyCamPlugins
https://twitter.com/katahiromz/status/1189869665251553280
何か追加してほしいプラグインがあったら教えてね。
https://twitter.com/5chan_nel (5ch newer account)
2019/11/03(日) 12:41:34.03ID:nr4jSbTs
https://github.com/katahiromz/YappyCam/blob/master/PluginFramework.cpp#L25
ドライバ関数を通じてDLLからEXEの関数にアクセスできる。凄いだろ?
377デフォルトの名無しさん
垢版 |
2019/11/11(月) 09:09:46.18ID:TRmuSqs3
完全初心者です
苦しんで覚えるC言語という初心者サイトを終わらせたら
次になにかおすすめサイトor本をやるべきなどありますか?

とりあえず義務教育に組み込まれるということで
何か作れるという体験をしてみたいのですが
2019/11/11(月) 09:12:12.48ID:lxCWwdCX
作れ
どの言語でもそれが最短かそれに近い高効率
2019/11/11(月) 12:29:24.77ID:bjD92kdR
Rust, Elixir は、小さめのサイズの本が出たから、簡単に読める。
その代わり、情報は少ない

Rustプログラミング入門、酒井 和哉、2019/10/13

小さめのサイズの本で、初心者向け。
簡単すぎるから、たぶん、かなり情報が少なそうw

プログラミングElixir、2016

著者は「プログラミングRuby」のDave Thomas

Elixir = Ruby + Rails + Erlang VM
Elixir は関数型言語で、状態を持たず、並行処理が得意

Elixir で並列に動く、小プロセスはデータを共有しない。
10万の小プロセスを、0.6秒で起動できて、すべてのCPUコアを使いつくす

これで、スレッドと状態を持つ地獄から、おさらば!
2019/11/11(月) 12:32:20.68ID:2oMqNNOD
>並行処理が得意

そんなもん今どきの言語なら皆そうなんだが?
いい加減スレ違いの書き込みはやめろ
ここはC/C++スレだ
381デフォルトの名無しさん
垢版 |
2019/11/11(月) 13:44:52.51ID:dWj5v9Wo
>>377
終わってから考えろ
2019/11/11(月) 16:13:50.62ID:JcIJLOOR
義務教育を受けてる若者なのか、教える立場の教師なのか、
はたまた我が子の勉強を心配する教育ママか。
とりあえず義務教育でCは使わないと思うよ。

しかし、このスレッドも意外に見てる人がいるのね。
2019/11/11(月) 16:30:36.69ID:nmrg3hQp
義務教育課程のプログラミング教育はフローチャート書いて終わりだよ
2019/11/11(月) 17:08:28.39ID:rlOgmRK8
それでいいよ
問題を分解して論理立てて解決する力
が必要なのであって構文とかどうでもいい
だから擬似言語でも良いし図だけでもいい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況