【PHP】下らねぇ質問はここに書き込みやがれ 50
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/07/11(水) 17:50:01ID:fYd+34USPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 49
http://pc11.2ch.net/test/read.cgi/php/1182794620/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0233nobodyさん
2007/07/16(月) 04:53:48ID:???$array = array("みかん"=>"3","なし"=>"2","さくらんぼ"="5");
だとして、
さくらんぼ:5
みかん:3
なし:2
という表示にしたいと思います。keyの数字を降順にして上の表な表示に
することって出来るのでしょうか?出来る場合は、関数などを教えて下さい。
0234nobodyさん
2007/07/16(月) 05:17:53ID:???0235nobodyさん
2007/07/16(月) 05:21:30ID:???0236nobodyさん
2007/07/16(月) 06:28:23ID:eChNNpaq0237nobodyさん
2007/07/16(月) 07:31:59ID:OjCJuTb6php_mbstring.dll が見つからないというエラーが発生して困っています。
php.iniで extension_dir = "C:/php/ext" も確認して、実際のファイル構造と
一致してるようなんですが、、 なにが原因でしょう
教えてください、よろしくおねがいします
0238nobodyさん
2007/07/16(月) 07:33:35ID:???0239nobodyさん
2007/07/16(月) 07:39:04ID:???>>231
もうすこしヒントをやる。
あとは書き換えてつかってみれ
for($i=0;$i<3;$i++){
$dat[] = array($i=>array(1,2,3));
}
echo "<pre>";
print_r($dat);
echo "</pre>";
0240nobodyさん
2007/07/16(月) 08:14:01ID:OjCJuTb6ありがとうございます
extension=php_mbstring.dll
の部分ですよね コメントアウトも解除してると思うんですが、、なにがおかしいのかなぁ…
いろんなサイトを見るとextension_dir = "C:/php/ext" の"を書いてないのもあったり、
ext/ としてるのもありで、全部試してるんですが、、
0241nobodyさん
2007/07/16(月) 08:21:48ID:???0243nobodyさん
2007/07/16(月) 08:22:39ID:???0244240
2007/07/16(月) 08:34:08ID:OjCJuTb6phpinfoによれば以下のようになっています
extension_dir C:\php\ext\
mbstring
Multibyte Support enabled
Multibyte string engine libmbfl
Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 4.4.4
Multibyte regex (oniguruma) backtrack check On
今、pearのインストールをしてるんですが、cmd でgo-pearを
実行すると「php_mbstring.dll が見つからない」とアラートがでています
また、cmd内でも「ext\php_exif.dllがない」とでます。→ちゃんと存在してます
0246240
2007/07/16(月) 09:18:30ID:OjCJuTb6度々すみません エラーは
「PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_exif.d
ll' - 指定されたモジュールが見つかりません。
in Unknown on line 0」
といった感じです(これのファイル違いがいくつもでてくる)
go-pear.pharの最新版も入手済みです
失礼ですが、確認のため質問させてください go-pear.bat自体を新しくするんですか?
0247nobodyさん
2007/07/16(月) 09:27:04ID:???windowsの環境変数でパスを通せ。それでも解決しなかったらまた考えてやる
0248240
2007/07/16(月) 09:52:26ID:???すでに C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe が
指定されてるんですが(ユーザ変数)
C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe;C:\php\go-pear.bat
でいいのでしょうか?
これで試してみてもうまくいかないですが…
設定後、cmd の set で確認すると、
PATH=;c:\mysql\bin;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\MySQL\M
ySQL Server 5.0\bin\mysql.exe;C:\php\go-pear.bat
となってました
0249nobodyさん
2007/07/16(月) 10:02:25ID:???0250240
2007/07/16(月) 10:33:49ID:???ありがとうございます。言われたとおりにしたところ、相変わらずうまくいかないですが
アラートダイアログのメッセージが変わりました!
(mb_string.dllが見つからない というのが出なくなりました
isqlt09a.dll OCI.dll libcs.dll が見つからない というアラートはでます)
問題が発生したため、CLIを終了します というメッセージが出ました
以下のcmdのエラーメッセージは相変わらず出ます。
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_filepro.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_ifx.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_oci8.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_oracle.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_sybase_ct.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
続行するには何かキーを押してください . . .
------
なんなのかなこりゃ、、もうPHPの新バージョンを再インストールした方がいいんでしょうか?
0252nobodyさん
2007/07/16(月) 10:43:17ID:???全部削除してphp.iniをいじらないで動作チェックしてみな
0253231
2007/07/16(月) 11:21:51ID:5Cp5+wVzうまくいきました。
ありがとうございました。
0254240
2007/07/16(月) 11:26:39ID:???ありがとうございます、プラグインの追加はしてません
今、php5.2.3をダウンロードして、php.iniを現行のものに上書きして、
;extension_ のコメントアウト解除 + extension_dir = "C:\php\ext\" だけ
やってgo-pear実行したんですが、変わらないです
やっぱりphp_mbstring.dllがない というアラートと、例のエラーが出ます
ちなみに>>251で書いた.dllのうち、php_filepro.dll以外は"php/ext"に入っています
この構成はDLしたphp5.2.3も変わらないです
まいりました…
0255nobodyさん
2007/07/16(月) 11:42:36ID:???0256nobodyさん
2007/07/16(月) 11:43:18ID:qpslan6h$url = "http://example.com/?下らねぇ質問";
echo rawurlencode($url);
UTF-8で保存し実行すると、
http%3A%2F%2Fexample.com%2F%3F%E4%B8%8B%E3%82%89%E3%81%AD%E3%81%87%E8%B3%AA%E5%95%8F
と出てきます。
これをdecodeすると、
$url = "http%3A%2F%2Fexample.com%2F%3F%E4%B8%8B%E3%82%89%E3%81%AD%E3%81%87%E8%B3%AA%E5%95%8F";
echo rawurldecode($url);
http://example.com/?荳九i縺ュ縺・ウェ蝠
といった感じに文字化けするのですがどうしてですか?
0257256
2007/07/16(月) 11:45:37ID:qpslan6h文字コード指定してなくてブラウザ側でShift_JISで表示されてました。
0258240
2007/07/16(月) 11:45:55ID:???わかりました
もうphpを入れなおすことにしました
それでもうまくいかなかったらまた質問するかもしれないですが
しつこい質問に付き合ってもらってありがとうございました
0259nobodyさん
2007/07/16(月) 12:31:25ID:FZx8tOaQWarning: mb_ereg() [function.mb-ereg]: mbregex compile err: premature end of char-class in /home/htdocs/test/pc/index.php on line 209
0261259
2007/07/16(月) 12:47:49ID:FZx8tOaQif( MB_ereg("あいうえ",$name) ){略}
0262nobodyさん
2007/07/16(月) 13:02:14ID:???http://d.hatena.ne.jp/harupu/20060328#p1
0263nobodyさん
2007/07/16(月) 13:02:27ID:???それ実際のソース?違うよね。
文字クラスが可笑しくてパターンコンパイル出来ないってエラーだから、
マッチパターンをちゃんと書いてくれないとどうしようもないよ。
0265262
2007/07/16(月) 13:16:01ID:???IEのみで確認。operaとfirefoxでは無効。
UTF-8でファイルを作っとくとIEでも無効
EUCとSJISで造ってる人はは対策すべし
0266262
2007/07/16(月) 13:19:00ID:???10サイト中、7個はXSSが可能。
認知度が低すぎ
0269nobodyさん
2007/07/16(月) 15:38:06ID:eChNNpaqナンバーの若い順にソートしたいのですがうまくいきません。
ID、ナンバー、好きな食べ物、好きな音楽
1,330,apple,pank
2,1024,orange,laten
3,22,budou,heeling
4,35,banana,rock
5,1,kyuui,classic
コードはこちらです。
$ary[0] = array("1","330","apple","pank");
$ary[1] = array("2","1024","orange","laten");
$ary[2] = array("3","22","budou","heeling");
$ary[3] = array("4","35","banana","rock");
$ary[4] = array("5","1","kyuui","classic");
array_multisort($ary, SORT_NUMERIC);
お手つきでしたらご指摘よろしくお願いいたします。
0270nobodyさん
2007/07/16(月) 15:44:09ID:???0271nobodyさん
2007/07/16(月) 15:49:34ID:???array_multisort()は列方向の配列が必要で面倒だから
usort($ary,create_function('$a,$b','return $a[1] - $b[1];'));
とかでいいんじゃね。
0272nobodyさん
2007/07/16(月) 15:55:48ID:eChNNpaqありがとうございます。思ったとおりの結果になりました。
私にはこのコードがなにをしているのか理解できないのでマニュアル見て勉強してみます。
0273nobodyさん
2007/07/16(月) 15:59:58ID:eChNNpaq2つも勉強させていただきました。ありがとうございます。
0274259
2007/07/16(月) 16:10:36ID:FZx8tOaQ入ります。それ以外はソースそのままです。
if( MB_ereg("あいうえ",$name) ){略}
0275nobodyさん
2007/07/16(月) 16:22:55ID:f3MIb3UOダウンロードツールでjpegファイルを連続でダウンロードされてるみたいです。
回避できる方法はありますか?
ご存知でしたらお教えください。
m(__)m
0276275
2007/07/16(月) 16:24:54ID:f3MIb3UOずるぽんあぷろだを使っています。
0277nobodyさん
2007/07/16(月) 16:52:19ID:???だからなんでそれを書かないのかと。
SJISでゼとか入ってて[とバイナリが被ってるんじゃない?
mb_regex_encoding()でちゃんと文字コードを指定すること。
0278nobodyさん
2007/07/16(月) 16:59:57ID:eChNNpaq0.5秒おきに手動でリロードしているのですが、
CPUの負荷が50%を超えてしまいます。
fileの読み込みはあまりしないようなプログラミングを心がけるべきでしょうか?
何度も恐縮ですがお手つきでしたらアドバイスお願いいたします。
0279nobodyさん
2007/07/16(月) 17:34:37ID:???fileの読み込みに限って言えば、それだけでCPU負荷が高まるようなものではない。
CPU負荷は他の処理が影響していると思う。
0280nobodyさん
2007/07/16(月) 18:33:35ID:???0281nobodyさん
2007/07/16(月) 19:12:08ID:???1)
UAとリファラを見るようにして、ツールのライトユーザーを弾く。
→ 弾いた場合はどこかにheader()で飛ばす
2)
閾値以上の連続リクエストにはウェイト(待ち時間)をわざと入れて、リクエストの負荷を減らす。
→
閾値を連続リクエストにはペナルティで 1秒 × 連続リクエスト回数累計の2乗 * 0.2 とか わざとsleep (待ち時間は適当)
とか、
閾値を超えた連続リクエストにはheader('HTTP/1.0 403 Forbidden');とか返すとか
UAもリファラも偽装できるから、スクリプトかかれたら弾けないけどね。
ダウンロードする側も、自作で上手にスクリプト組んだら実質防御出来ない。
0282nobodyさん
2007/07/16(月) 19:17:34ID:???後は、nec.co.jpやSOMY.CO.JPなどの大手ホストだけ特別に扱うなどの処理をするとか。
0283nobodyさん
2007/07/16(月) 19:19:23ID:I4aE+UQmしかしGZIP圧縮した容量が20MB超えたら、PHPでメモリーリミットエラーがおきてしまいました。
現在PHPのメモリーリミットは256MBに設定してあります。
これ以上増やす事も出来ないのですが、何か代替策はないでしょうか?
FTP関数は許可していないので使えません。
同じサーバーにバックアップデータを置いておくとクラッシュしたときにバックアップごとふっとんでしまうので、別のサーバーもしくは手元に毎日置いておきたいです。
手動で毎日ダウンロードするって言うのはなしでおねがいします。
0285nobodyさん
2007/07/16(月) 19:28:10ID:???そもそも256に設定しているのに20で落ちるのがおかしいと思うけど。
あとは、毎日ではなく毎時でやるとか。
0286282
2007/07/16(月) 19:29:03ID:???PHPからCを呼び出して、Cで取得するしかない。
0290nobodyさん
2007/07/16(月) 19:33:01ID:???まずハードから見直すことを考えましょう。
サーバーで重要なデータを扱う場合には、RAIDを組むのが普通です。
後は、DBのバックアップツールで別のHDDに定期的にコピーするとか
0291nobodyさん
2007/07/16(月) 19:56:02ID:???とりあえず案としてはテーブル単位でやってみたら
問題解決の手順として
本当にメモリーエラーなの? ってのが気になる。
本当なら、まずはどこでメモリーエラーになっているか調べなさいな
とりあえずそっからでしょ
>>288
差分でとるにしても
バックアップのスケジュールのどこかでフルバックアップしないと破綻するから
結局根本解決にはならんのでは ※今回のケースの場合な
0293nobodyさん
2007/07/16(月) 20:12:30ID:???0294nobodyさん
2007/07/16(月) 20:17:26ID:???MACアドレスが主流になってくるよ。
0295283
2007/07/16(月) 21:03:22ID:uy8jxOc+PHPのMemory_limitは間違いなく256MBです。
出来るなら毎時の方がいいのですが……とりあえず今は毎日でやっています。
>>287
scp、rsyncについて調べてみます。
>>288
差分バックアップは復元の時に、めんどそうですね。 案に考えて見ます。
>>289
HTTP関数だけで別サーバーに転送できるんですか?
別サーバーからfile_get_contentsやfopenでそのデータを開いて、そのサーバーに保存するとかではないですよね?
>>290
現在うごいているサーバーに新しく物を入れるのは……ちょっとためらってしまいます。
最初からRAID組んでおけばよかったですね…
>>291
テーブル単位だと……一番大きなデータベースで120個くらいのテーブルがあって、新機能と同時にテーブルも追加されているので、難しそうです。
telnetからCRONのシェル実行してやると、メモリーエラーのPHPが帰ってくるので、間違いはないと思いますが…
>>292
シェルスクリプトでsendmailまで通してしまえばいいんですね、そこは盲点でした。
簡単に組もうと思ってPHPでやってました。
とりあえず、いただいたアドバイスでやってみて、また報告します。
0296nobodyさん
2007/07/16(月) 21:53:18ID:???HTTP関数だけで別サーバーに転送できるんですか?
別サーバーからfile_get_contentsやfopenでそのデータを開いて、そのサーバーに保存するとかではないですよね?
クライアントからPOSTしてサーバーにデータを送るのと一緒で、
サーバーから別サーバーへPOSTすればいいだけ。
0297nobodyさん
2007/07/16(月) 22:14:19ID:???0298nobodyさん
2007/07/16(月) 22:15:44ID:???実際に変更することはかなりの難関だけど
0299283
2007/07/16(月) 22:17:16ID:cqqgBieafsock関数を使うって事ですね。
だけど、これ受け取り側のPOST_MAX_SIZEとかMEMORY_LIMIT、UPLOAD_MAX_FILESIZEを相当大きくしないといけないですよね…
20MBのGZIPをPOSTするのに、どれくらいの設定にすればいいのだろう……
0300nobodyさん
2007/07/16(月) 22:26:19ID:???メールで送ったりPOSTするのかよ。
バックアップを保管しておく側のマシンが
SFTPクライアントで自動で一日一回取りに行けばいい。
クライアントマシンのCRONかタスクスケジューラ使えよ。
0301nobodyさん
2007/07/17(火) 00:31:18ID:???NICの故障交換ごときでMACアドレスが
コロコロ変わると管理が面倒くさいので
NICのツールで大抵変更できるようになっている。
ベンダーコードの部分まで変更できちゃったりするけど。
ipconfigにはそういった機能はないんではないかね。
ありそうなのはデバイスドライバの設定メニューのところとか。
0302275
2007/07/17(火) 10:12:03ID:7P0i756Lありがとうございます。
難しそうですが試行錯誤してみます。(実はチンプンカンプンです・・・orz)
0303nobodyさん
2007/07/17(火) 10:27:38ID:???0305nobodyさん
2007/07/17(火) 10:57:54ID:???ifconfigじゃたぶんムリ
たぶんLinuxの場合ioctl(2)とかを叩く必要があるはず。
その手のユーティリティがあるかもしれないけど。
それと、TCP/IPのソケットから相手先のMACアドレスを知る方法ってあるの?
つか、MACアドレスってイーサネットのルーティングでしか使わん情報で、
PPPとか、IPを経由した時点で消えると思っていたけど...
IPv6ならサフィックスとしてMACアドレスを使う場合もあるはずだから取れるかも。
0306nobodyさん
2007/07/17(火) 11:04:17ID:uhiZpK63そういう関数ってありますか?
0307nobodyさん
2007/07/17(火) 11:15:28ID:???0309nobodyさん
2007/07/17(火) 13:38:28ID:uhiZpK63Bページを開いたときに「音楽ファイル」を開いて
で、AページとBページを行き来すると、
ページを開くたびにファイルを読み込むのも負荷が気になるんです。
別ページに移動してまた同じページにもどってもinclude_onceはまたファイルを読み込みますよね?
Cookieだとさすがに量が多いので別の方法ってないでしょうか?
0310nobodyさん
2007/07/17(火) 13:47:26ID:???サーバーサイドなPHPでクライアントのメモリはどうこう出来ないだろ。
クライアント側に置きたいならクッキー以外無いでしょ。
いまいちやりたい事が分からないから、やりたい事と想定しているファイルの容量と種類を晒せば何か助言があるかもね。
0311nobodyさん
2007/07/17(火) 13:52:53ID:???それはクライアント側が決めることだから無理。
0312nobodyさん
2007/07/17(火) 13:59:28ID:???ただし更新させるのが難しくなるがな
0313nobodyさん
2007/07/17(火) 14:04:09ID:???そんなに気になるなら、PHP無関係なように静的なhtmlを吐き出しておけばいいやん。
それ以前に、サーバ側でキャッシュ使って改善できんのかとも思う。
0315nobodyさん
2007/07/17(火) 14:11:52ID:uhiZpK63ファイルの更新日時をクッキーに記録して、クッキーに保存されている記録と照らし合わせて
新しかったら読み込ませず、古かったらinclude_onceをかませようと思います。
いろいろと助言くださって助かりました。ありがとうございます
0317nobodyさん
2007/07/17(火) 14:26:43ID:???目的が不明瞭だが もし使って良いのなら、
ajax + レスポンスでhtmlを返して、<div id="hoge"></div> の間をinnerhtml書き換えすることでうまくいく。
(部分更新するデータのみ読み込み出来る。)
0318nobodyさん
2007/07/17(火) 15:14:48ID:???0319nobodyさん
2007/07/17(火) 15:58:21ID:R00cIuyl絵文字を表示するときは、Unicodeでの表示が良いのでしょうか?
3キャリア対応でキャリア別に絵文字を表示させたいのですが、
何かアドバイスがあればよろしくお願いします。
0320nobodyさん
2007/07/17(火) 16:37:38ID:???うちも似たようなことやってる。include(require)は結構応用がきいて便利。
メソッド内部でよみこめば$this参照ができてメソッドを使えるし、部品ごとにわけれてソースが綺麗になる。
なにより分解していくとかなり使い回しを意識してコードを書けてる気がする。
>>319
なんでもいい気がする。Unicodeにすれば
?(SJIS)と?xE63E;(Unicode)で同じ文字になってたらそれでいいんじゃない
0321nobodyさん
2007/07/17(火) 19:04:22ID:k2OQL4pVforの繰り返し処理で値を参照し、数字が出た場合
その要素を、その数字のキーを持つ配列の直後に並べ変えたいのですが、
可能ですが?
(例)
rei[1]="いぬ"
rei[2]="ねこ"
rei[3]="こねこ"
rei[4]="1"
rei[5]="ぬこ"
を
rei[1]="いぬ"
rei[2]="1"
rei[3]="ねこ"
rei[4]="こねこ"
rei[5]="ぬこ"
こんな感じです。
宜しくお願いします。
0322nobodyさん
2007/07/17(火) 19:09:18ID:???0323nobodyさん
2007/07/17(火) 19:12:15ID:???・配列のキーを取得
・キーに1を足す
・配列の値に↑の値があるかチェック
あとは自分で考えろ
0324nobodyさん
2007/07/17(火) 19:14:54ID:???phpからプロクシ的に操作したいのですが、
どのようにすればよいでしょうか?
readfile( 'http://example.com/hoge.cgi?m=test' );
としてみましたが
script not found or unable to stat: /home/taro/public_html/hoge.cgi
となぜかphpを設置したサーバーのパスで、「ファイルが存在しない」というエラーが出ます
0325nobodyさん
2007/07/17(火) 19:21:19ID:???0326nobodyさん
2007/07/17(火) 19:56:28ID:???0327nobodyさん
2007/07/17(火) 20:37:42ID:???今、php5.2.3をインストールしてphp.iniの編集をしてたんですが、
mbstring.script_encoding の指定がありません
(以前使ってた5.2.0ではあって、euc-jpを指定しています)
これは気にしなくていいものなんですか?
0328nobodyさん
2007/07/17(火) 20:45:29ID:???0329nobodyさん
2007/07/17(火) 21:49:25ID:iq9KHvpN基本は理解できているのですが、
classを利用したプログラミング、また、
オブジェクト指向の概念が理解できません。
本を買ってclassの基本構造などは理解しましたが、
自分で書くとなるとどのような場面で
どういったclassを書けば良いのか
さっぱり検討がつかない状態です。
このような段階(レベル)から一段ステップアップする為には
どうしたらよいでしょうか?
習得にあたって参考になった書籍や、
経験に基づく習得方法などを教えてください。
購入した書籍
■はじめてのPHP5プログラミング エキスパート編 (単行本)
■いちばんやさしい オブジェクト指向の本 (新書)
0330nobodyさん
2007/07/17(火) 21:56:16ID:???に対する内容をテンプレに入れたらどうだ
0331nobodyさん
2007/07/17(火) 22:06:09ID:???オブジェクト指向分析・設計関連の本でも探してみては
あとは経験かなぁ
補助本としてなら
デザインパターン入門 結城浩
リファクタリング入門 結城浩
UMLモデリングのエッセンス マーチン・ファウラー
0332nobodyさん
2007/07/17(火) 22:09:59ID:???自分の経験と記述を比較してみるってこともしないとね。
オブジェクト指向って、実践知の最たるものだから。
ごちゃ混ぜの中から自分の経験をパターンの合わせてトレースしてみること。
■ このスレッドは過去ログ倉庫に格納されています