C#, C♯, C#相談室 Part92 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2017/01/28(土) 16:46:53.58ID:op86qfG/http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467211515/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
0652デフォルトの名無しさん
2017/03/24(金) 19:54:06.25ID:HsxCjAja2と3もロックされなければ既に破棄され別の領域として
再利用された誤った情報を読み出す可能性があるだろ
0653デフォルトの名無しさん
2017/03/24(金) 19:54:24.48ID:9VMQOfeXMSが苦労するのはいいとしても、その結果激増したバグに悩まされるのはお前らだぞ
0654デフォルトの名無しさん
2017/03/24(金) 20:07:48.70ID:RtKD05ZRお前がinvokeをウザイと思わなければそれでいい。
俺はinvokeをウザイと思うからMSが隠蔽しとけ、と思う。
多分後者の方が多いだろ、この件に関しては。
>>652
ついにC#がGC言語だと知らない奴も出てきたか、、、
>>653
MSはこの程度ならきっちり実装出来るよ。
というかMSって比較的まともだと思うぞ。
0655デフォルトの名無しさん
2017/03/24(金) 20:09:50.64ID:UKoqSEXl0656デフォルトの名無しさん
2017/03/24(金) 20:15:53.11ID:RtKD05ZRいちいち言ってることがアレだし。
0657デフォルトの名無しさん
2017/03/24(金) 20:24:26.17ID:RtKD05ZRただ、ProgressBarなんてどう考えてもタスクスレッドから書き換えられるのが仕様だろ。
(むしろUIスレッドから書き換えることがない)
それをいちいちinvokeはねーだろ。
せめてProgressBarだけでも対応しとけよと思うだろ普通。
0658デフォルトの名無しさん
2017/03/24(金) 20:27:59.45ID:9LJ2CaVFアレなのはお前だよ馬鹿...
しかも重症のな。
何度も言うけど、こんなのはweb上にあるようなマルチスレッドの入門記事レベルの話だ。
そもそもスレッドセーフってどういうことなのかすら理解してないし、自分でそういうコードを書いたこともないだろお前。
しかし、こういう馬鹿に限って偉そうなのは何なのかね
0659デフォルトの名無しさん
2017/03/24(金) 20:32:42.95ID:RtKD05ZRではよろしく>>658
0660デフォルトの名無しさん
2017/03/24(金) 20:57:32.53ID:UKoqSEXlProgressBarを対応させたら○○も対応させろとか言い出す人が出ると思うでしょ普通
0661デフォルトの名無しさん
2017/03/24(金) 21:56:51.21ID:vGZXBTd10662デフォルトの名無しさん
2017/03/24(金) 22:04:34.44ID:vGZXBTd1>MSならこの程度はきっちり実装出来る
ここが一番面白かった
0663デフォルトの名無しさん
2017/03/24(金) 22:13:22.45ID:RtKD05ZR>>559 > invokeってフォームに限ってどうして必要なのですか?
老害: それがしきたり。
ゆとり池沼連呼リアン>>658: スレッドセーフ!スレッドセーフ!
俺: MSが馬鹿だから。
ゆとりって連呼リアン程度の知能しかないよなマジで。
そもそも俺の>>650は>>589(俺ではない)とほぼ同じ内容だぞ。
お前ら馬鹿が付いて来れてないから書き直しただけでね。
お前らが589を最初から理解していればもっとマシな議論だったろうさ。
0664デフォルトの名無しさん
2017/03/24(金) 22:24:18.31ID:9LJ2CaVF馬鹿なのはMSじゃなくてお前だっての馬鹿
0665デフォルトの名無しさん
2017/03/24(金) 22:36:30.53ID:9LJ2CaVFControlのメンバが非ユーザーコードからも呼ばれることを理解してないからだろうなたぶん
0666デフォルトの名無しさん
2017/03/24(金) 22:41:45.59ID:RtKD05ZRお前がそう思うんなら(ry
0667デフォルトの名無しさん
2017/03/24(金) 22:42:26.38ID:9LJ2CaVF0668デフォルトの名無しさん
2017/03/25(土) 01:12:27.10ID:66tFvNtYこんなもんで余計なパフォーマンス食われるのも嫌な感じだしね
スレッド無視で叩きこめるならその方がありがたい物ではある。
インクリメント問題くらいならこっちで対処するわって感じですな。
0669デフォルトの名無しさん
2017/03/25(土) 01:17:38.46ID:66tFvNtYprogreassBarの操作をasync/awaitでブチかましてスレッドプール爆発させてた新人いたな(笑)
凄い困ってたけど、きっと何が何だか分からなかったんだろうな。
0670デフォルトの名無しさん
2017/03/25(土) 01:39:16.42ID:O6oCv4KMそもそもコードの設計論から言ってもワーカースレッドからUIを操作するなんてありえない。
UIに依存するモデルってどんな糞設計だよ。
モデルにSynchronizationContextとか持たせてUIスレッドに同期したイベントで通知させるのは
設計としてありだけど、直接コントロールをいじるとかありえん。
それも気に入らないならUI側が能動的にタイマーでも使ってモデル側を読めばいいだけ。
0671デフォルトの名無しさん
2017/03/25(土) 04:16:02.72ID:++OH//Pd0672デフォルトの名無しさん
2017/03/25(土) 09:54:01.33ID:QDpQza6Mとりあえずします。
PictureBoxのPaintイベントでImageプロパティを再設定する処理などをしてるんですが
どうもMessageBoxの挙動がおかしくなってます。
フォームより後ろに表示されてしまって操作不能になってます。
とりあえず通常のメッセージボックスの場合はパラメータを弄って強制的に全面に表示させてますが
困るがSaveFileDialogなどで上書き確認のメッセージボックスが表示された時です。
この場合も後ろに表示されてしまって操作できないのでどうしようもないです。
これを回避する方法はどうやればよいんでしょうか?
Paintイベントの中身を消去すれば普通に表示されますが出来ればそのままでメッセージボックスも前面に表示させたいです。
0673デフォルトの名無しさん
2017/03/25(土) 09:57:11.64ID:iGx2aDuI俺たちはエスパーじゃないんだから、まずそれがどんなコードか教えてくれよ
0674672
2017/03/25(土) 09:57:40.89ID:QDpQza6MPaintイベントで毎回PictureBoxのImageプロパティを再設定してるのが原因でした
下記のように条件を入れてやるだけで回避できました。
if(pic.Image != img){
…
}
0675デフォルトの名無しさん
2017/03/25(土) 09:59:45.97ID:swqPfyBg0676デフォルトの名無しさん
2017/03/25(土) 10:45:00.80ID:omxknQTjwhile(await ReadAsync().ConfigureAwait(false)) {
...
}
って書いてるライブラリがあるんだけど
件数が多くなりそうなループでasync/awaitするとタスク生成とコンテキスト切り替えのオーバーヘッドで逆にパフォーマンス悪くなったりしないもんなの?
0677デフォルトの名無しさん
2017/03/25(土) 11:08:32.17ID:oe75j5bCReadAsync使う時点でそれらよりデータソース読み取りの方がコスト大と作者が判断しているんじゃないかね
MemoryStreamに対してReadAsyncとか使っているなら知らんけど
0678デフォルトの名無しさん
2017/03/25(土) 11:09:13.59ID:kGpqWpaUそりゃ呼び出しのオーバーヘッドは増えるだろうけど、それが問題になるかどうかは別だ
パフォーマンスという言葉を安易に使うのはやめよう
君はバッチ処理をしてるのかオンライン処理をしてるのかストリーミング処理をしてるのか、
そのライブラリの方はどういう使われ方を想定してるのか、
処理の規模はどれくらいか
パフォーマンスってのは結果的に目的をどれだけうまく達成できたかであり、一面だけを見て判断できるものじゃない
0679デフォルトの名無しさん
2017/03/25(土) 11:11:43.78ID:2T3avjLL処理速度出すためにasync/await使うわけじゃないのは理解しているよな?
0680デフォルトの名無しさん
2017/03/25(土) 11:13:12.94ID:2T3avjLLパフォーマンス
スマート
0681デフォルトの名無しさん
2017/03/25(土) 12:12:06.97ID:AJzcpICNhttp://echo.2ch.net/test/read.cgi/tech/1490366833/
0682デフォルトの名無しさん
2017/03/25(土) 13:35:04.97ID:66tFvNtYとりあえず動くもの作るからな、クリックして必要な事をかける構造になっている以上
次に起こる事は、必然的にスレッドプール爆発なんだわw
0683デフォルトの名無しさん
2017/03/25(土) 14:21:07.83ID:pA2Zx06R0684デフォルトの名無しさん
2017/03/25(土) 14:49:04.12ID:66tFvNtYC#はそういう言語じゃない
0685デフォルトの名無しさん
2017/03/25(土) 15:02:20.11ID:OnvCww5G糞袋の観測範囲で
0686デフォルトの名無しさん
2017/03/25(土) 17:12:28.65ID:P4wL6N6Lローカルに設置したcssやjsファイルを読み込む方法がわかりません。
どこに配置してどのように読み込めば良いか
ご存じの方教えていただけますでしょうか?
どうぞよろしくお願いします。
0687デフォルトの名無しさん
2017/03/25(土) 18:18:23.98ID:gz8AHGhh0688デフォルトの名無しさん
2017/03/26(日) 00:26:03.65ID:b1vqxh2T0689デフォルトの名無しさん
2017/03/26(日) 11:09:36.56ID:WUrKAJmahttp://livedoor.blogimg.jp/ladymatome/imgs/7/6/76ec3c1e.jpg
0690デフォルトの名無しさん
2017/03/26(日) 12:41:56.97ID:Uwt+/Suh釣りか?マジで言ってるのなら
お前ら別の意味でのスタティックおじさんになってるぞ。
まあC#erなんてそんなもんだと今回思い知ったが。
0691デフォルトの名無しさん
2017/03/26(日) 13:20:23.73ID:x9SVAeuTたかが100回のUIスレッド切り替えでオーバーヘッドとか笑っちまうな
スレッドを無視するより書き換え回数減らしたほうが余程生産的だし簡単だ
0692デフォルトの名無しさん
2017/03/26(日) 13:20:26.49ID:hVl7ZVniそもそも今時Windowsのデスクトップアプリなんか作ってる時点で
スタティックおじさんであることを自覚したほうがいいよ
0693デフォルトの名無しさん
2017/03/26(日) 13:24:42.49ID:TjDGXANh0694デフォルトの名無しさん
2017/03/26(日) 13:28:02.28ID:WQ8v1gdY0695デフォルトの名無しさん
2017/03/26(日) 13:48:27.23ID:7xcWRiGyハングアップしてないかわかればまぁいいんでそればかりつかってる
0696デフォルトの名無しさん
2017/03/26(日) 13:59:10.19ID:TjDGXANh0697デフォルトの名無しさん
2017/03/26(日) 14:02:35.77ID:Lixhnbpuそれ追加されたの.Net2.0だから10年以上前だよ
0698デフォルトの名無しさん
2017/03/26(日) 14:03:21.73ID:xbLciI4Bでないとこのスレ埋め立てるからな
0699デフォルトの名無しさん
2017/03/26(日) 14:13:37.56ID:Lixhnbpu0700デフォルトの名無しさん
2017/03/26(日) 14:19:29.01ID:Uwt+/Suh俺は>>650だよ。そして>>640含むお前ら大多数よりは賢いことはもう示したろ。
で、>>670-671も同様にアホっぽく見える。
しかしマジでそう思っているのなら、それを示せば多少は教えてやるよ、ということだ。
何か最近、煽ったりカニンガムの法則を試しているような奴も多いんでね。
それに付き合わされるのはウザイ。
俺の意見は ID:Un9Q+jtZ とは完全には一致はしないが、
6割くらいは一致するし、彼が何を言いたいのかは分かる。
既に言ったとおり、650も>>589の代弁に近い訳でね。
お前らは>>597(重ねて言うが俺ではない)の意味を理解出来ていないように見える。
そこでお題を出してやる。
これをお前ら流の「美しい実装」をする方法を述べてみろ。
駄目出ししてやるよ。
フーリエ変換をする関数 calc_FFT があって、
計算に時間がかかるので、プログレスバーに進捗状況を表示したい。
参加する人はどうぞ。
0701デフォルトの名無しさん
2017/03/26(日) 14:24:02.60ID:13fTqv5Iまだやる気かよ。
だからねえ、そういうのは>>670に書いた2つのやり方のどちらかを選択するのが普通。
どんな方法論を取るにしろ、モデル側から直接UI部品をいじるとかありえない。
依存方向は一方通行にするなんて基本中の基本だろ
0702デフォルトの名無しさん
2017/03/26(日) 14:32:06.72ID:13fTqv5Iなっているのは不合理かどうかって話も、はっきりいって問題提起した奴が何も分かってない馬鹿なだけ。
こういう仕様は十分に合理的。
0703デフォルトの名無しさん
2017/03/26(日) 14:55:35.58ID:V5FfYo93通じない話を繰り返すな
壊れて向きが変わらなくなったチョロQかテメー
0704デフォルトの名無しさん
2017/03/26(日) 15:00:04.71ID:7VPGG3VyエキスパートからしてみてもC#を使いたい動機は素早く手軽に組みたいという動機にあるからね。
時間をかけてガチガチにやらないかぎり上手くいかないとか、それは勘弁願い下げたよな。
0705デフォルトの名無しさん
2017/03/26(日) 15:09:11.18ID:N/oWszN2いくら寛容な人間様でも下等生物と一緒にされるんでは不愉快ですわ
0706デフォルトの名無しさん
2017/03/26(日) 15:14:26.60ID:7VPGG3Vytemplateメタプログラミングならなんでもお望みの書き方でできるよ。
0707デフォルトの名無しさん
2017/03/26(日) 15:37:28.26ID:Uwt+/Suhこういうのは急いで出来る必要はないから、じっくり考えてみてよ。
当たり前だが俺は>>670-671よりもマシな解決方法を持っている(つもり)
>>701
採点結果: スタティックゆとり乙
君はどういう依存が悪いのかを理解出来ていない。
そしておそらくUIはスタティックだと信じている。
ただしMSも同様に馬鹿だった。だからFormは糞なのも事実。
しかし世の中には他の実装方法もあるって事さ。
君達がロックフリーの世界を知らなかったようにね。
ヒントとしては、
> どちらかを選択する
ここが間違っている。
何通りも用意するとか、ラップして変換するとかは、明らかに無駄だよね。
0708デフォルトの名無しさん
2017/03/26(日) 15:46:45.12ID:bdiJ1zQR斬新な煽り方だなw
0709デフォルトの名無しさん
2017/03/26(日) 16:30:36.77ID:E6fNHh8L「この俺だけが世の中の真実に覚醒した!!!この世は嘘と欺瞞にまみれていて(笑)
俺以外の連中は馬鹿ばかりだ!!!」
ってなるのは何なのかね。
まあ2chにはこういう単細胞で自分を客観的に見られない奴いっぱいいるけど、
>>707みたいにそういうタイプはプログラマとか知的な仕事についてはいけない人だよな本来
0710デフォルトの名無しさん
2017/03/26(日) 16:33:32.75ID:7VPGG3Vy0711デフォルトの名無しさん
2017/03/26(日) 17:00:26.56ID:nZrkbKSG○○おじさんが馬鹿にされる本質は金のハンマー信仰にあるのだから
0712デフォルトの名無しさん
2017/03/26(日) 17:09:41.70ID:E6fNHh8L彼はそのレベルにすら達してないよたぶん。
背後にあるトレードオフに気が付かないから不条理でないものが不条理に見えてしまう
自分の馬鹿さ加減を自覚できないだけ
0713デフォルトの名無しさん
2017/03/26(日) 18:57:25.59ID:iTS+fWTZダメ出しなんて要らん
どや顔で語りたいならぐうの音もでない実装を晒しやがれ
0714デフォルトの名無しさん
2017/03/26(日) 19:11:26.31ID:iZtP8D0nRxのISchedulerインターフェースを実装したいのですが、ScheduleメソッドのDateTimeOffsetを引数にとるオーバーロードとTimeSpanを引数にとるオーバーロードって
どのように実装すればいいのですか。
本家Rx.NETのリポジトリにあるコードをいくつか見ましたが、
なんとなく、指定された時間の分だけ遅延させて
デリゲートをInvokeさせるというのは分かりましたが、この2つのオーバーロードの具体的な実装方法を文章で書いてあるところを教えてください。
あと、戻り値がIDisposableなんですけど、これはスケジュールの解除を行うDisposableでいいですよね。
0715デフォルトの名無しさん
2017/03/26(日) 20:02:08.99ID:YTmW3NMW利根川さんきたーーーーw
0716デフォルトの名無しさん
2017/03/26(日) 20:06:43.37ID:Uwt+/Suh俺は語りたいわけじゃない。
だから君の意見を尊重して、俺の答えは書かないことにするよ。
君らは一生馬鹿なままで過ごせばいい。
C#にとどまっている限り、回りもみんな馬鹿だから、ばれないで済むだろう。
ただ、知っている奴が見たら、お前らは本当に間抜けなことをしている。
だけど、そういうのは自分でいろいろ考えないと身につかないんだよ。
だから自助努力する奴に対してはサポートしてやろうとしただけ。
とはいえ、俺の案も他言語では普通に使われる手だから、探せば出てくるはず。
それは君たちで探すんだね。
俺はくだらない煽りには本当に辟易している。
そのエネルギーは正しくプラスの方向に使うべきだよ。
マイナス方向に使って煽るのではなくてね。
君は何がしたかったんだ?
俺の面目を潰したかったのなら、俺より素晴らしい実装を先に言ってしまえばよかっただろ?
或いは他の人から、もっと素晴らしい実装が出てきたら、君にも糧になっただろ?
そうやってプラスの方向にお互いに高めていくべきなんだよ。
それを、「じゃあ教えてやらない」と言われる話の振り方をしてしまうから、
ゆとりはゆとりのままなんだよ。
聞くは一時の恥、聞かぬは一生の恥、だよ。
こんな匿名のところですら面子を重視しているうちは一生ゆとりだよ。
0717デフォルトの名無しさん
2017/03/26(日) 20:09:36.55ID:XWnO8Cg20718デフォルトの名無しさん
2017/03/26(日) 20:52:30.96ID:iTS+fWTZこういう奴が書くコードも推して知るべしなんだろうな w
0719デフォルトの名無しさん
2017/03/26(日) 21:11:54.02ID:DeCVSWGu問題なのは言ってることが正しいかどうか、それだけ。
長文かどうかなんてそれとまったく関係がない。
彼はトンチンカンな勘違いをしてるから馬鹿にされてるだけ。
0720デフォルトの名無しさん
2017/03/27(月) 00:01:17.74ID:rNkb8v7V頓珍漢なこと書く奴ってたいてい長文だろって話だぞ
0721デフォルトの名無しさん
2017/03/27(月) 00:14:45.53ID:qUMQbQ0X馬鹿の世界ではきっとすべての事柄が三行以内の短文で表現できることになってるんだろうね。
己の無学を語るに落ちてるな
0722デフォルトの名無しさん
2017/03/27(月) 00:18:01.70ID:rNkb8v7V逆とか裏とかを理解してないのってプログラマーとして致命的じゃね?
0723デフォルトの名無しさん
2017/03/27(月) 00:19:42.90ID:wneB9bMR0724デフォルトの名無しさん
2017/03/27(月) 04:02:24.71ID:UZsp8jX5せっかくなので教えて欲しい
ちょっと考えたけど、やっぱりMaximumとMinimumがValueの変換中に変わるときとかが結構めんどくさい
あと、オーナードローや継承が安全にできることも必要か
プログレスバーのValueだけどかならともかく、コントロール全部をスレッドセーフにとかは非現実的なんじゃないか?
実際近年やってるところは少し調べた限り無いし
0725デフォルトの名無しさん
2017/03/27(月) 04:51:00.01ID:FSqhbRGK誰も触れてくれなくて草
0726デフォルトの名無しさん
2017/03/27(月) 05:02:30.31ID:rNkb8v7V>>700 に言えよ w
0727デフォルトの名無しさん
2017/03/27(月) 14:11:21.66ID:H4MLQPNTまあ正直今時Rxかよwwwwww
と草生えるからな
保守案件かも知らんが御愁傷様だ
0728デフォルトの名無しさん
2017/03/27(月) 15:09:08.98ID:OggmZorO知ってるのが当然みたいに言われても困る
.NET Fx以外の個別のライブラリについてはスレ違い
0729デフォルトの名無しさん
2017/03/27(月) 22:59:41.60ID:ty5ByWfaスタティックおじさんって誰よ?
0730デフォルトの名無しさん
2017/03/27(月) 23:14:42.86ID:53TkDvRN知らなかったのか
0731デフォルトの名無しさん
2017/03/27(月) 23:28:21.19ID:c1Kh3EUH0732デフォルトの名無しさん
2017/03/27(月) 23:52:27.87ID:dYBhOZra0733デフォルトの名無しさん
2017/03/28(火) 07:20:39.72ID:1WRXezaS不二痛のノンプログラミングツールの
販促で 銀の弾丸を求めて とか
書いてあったの思い出した
あんな大手企業がスゲー認識してるなと思った
0734デフォルトの名無しさん
2017/03/28(火) 08:08:28.90ID:W2JaqSVc0735デフォルトの名無しさん
2017/03/28(火) 16:32:12.10ID:WR7Bj+dr0736デフォルトの名無しさん
2017/03/30(木) 00:54:43.35ID:8DsEMtOy0737デフォルトの名無しさん
2017/03/30(木) 01:35:10.25ID:DtnWdi8P0738デフォルトの名無しさん
2017/03/30(木) 01:58:32.69ID:Qg6ZUcGUFormが閉じられた後も紐づけしたままだとお漏らしになるんだっけ?
0739デフォルトの名無しさん
2017/03/30(木) 02:50:16.54ID:DVY8Bk9i動くよ、ググってみ
0740デフォルトの名無しさん
2017/03/30(木) 06:49:49.86ID:U97Tvha+ならない
0741デフォルトの名無しさん
2017/03/31(金) 09:35:08.92ID:YcsHI68o操作したいコントロールの多くに一意のAutomatinIDが割り当てられていません。多くのコントロールのIDが1や2になっています。
一応、コントロールの順番が変わらないものと決め打ちして操作したいコントロールを特定することは可能なのですが、不便です。
もっとうまいやり方ってありますか?
後は表示位置を元に特定するくらいしか思いつかないのですが。
AutomationIDって、少なくともVB6では自分で設定できないのでしょうか。
一応このレガシーアプリのソースコードはあり、編集も可能なのですが、
AutomationIDというのを設定するところは見当たりません。
0742デフォルトの名無しさん
2017/03/31(金) 14:28:02.89ID:gIiQslt60743デフォルトの名無しさん
2017/03/31(金) 19:34:04.77ID:BtloYTx6DBに処理対象データがあるか確認
__ある場合:メッセージボックス(*件処理します。処理を続けますか?)
____はいの場合:データ更新処理
____いいえの場合:なにもしない
__ない場合:メッセージボックス(データがありません)
こういう処理を非同期リクエストを使わずに実装したいのですがどうすればいいでしょうか
入力フォームの内容もクリアされないようにしたいです
0744デフォルトの名無しさん
2017/03/31(金) 19:36:51.55ID:kI20EOUu0745デフォルトの名無しさん
2017/03/31(金) 20:45:16.64ID:BtloYTx6教えてください
お願いします!
0746デフォルトの名無しさん
2017/03/31(金) 21:59:00.75ID:wAJQEnGm0747デフォルトの名無しさん
2017/03/31(金) 22:08:53.88ID:PPRsLJ2Y遅くなったけどありがとう
やっぱりそうか
0748デフォルトの名無しさん
2017/03/31(金) 22:10:11.37ID:9w4qNkVe正直おまえキモイ
0749デフォルトの名無しさん
2017/03/31(金) 22:38:20.66ID:BKtRT3pJフォームの入力内容を書き戻すのに加えて、確認中であることを示す値を入れたhiddenフィールドと
$(function() { if (confirm(msg)) $("#form").submit(); });
みたいなスタートアップのスクリプトを仕込んで返せばいいんじゃないの
俺ならこんな汚物を出してきたら差し戻してAJAXで書き直させるけど
0750デフォルトの名無しさん
2017/04/01(土) 19:08:34.68ID:iJwskPQ3{
Console.Out.WriteLine("氏ね");
}
0751デフォルトの名無しさん
2017/04/01(土) 19:15:59.90ID:4r7Zvrb2■ このスレッドは過去ログ倉庫に格納されています