Cドライブの空き容量が極端に少ない時の対処法

PHP

Cドライブの空き容量が極端に少ない時の対処法

ある、平日。
いつも通り、仕事を行っていると、eclipseからあるエラーメッセージが!
「空き領域がなくて保存できません」とのエラーメッセージ!!

まさかと思い、ローカルディスク(Cドライブ)の空き容量を確認してみると、
465GB中、空き領域20MB。
なぜと思い、いらないファイルを消して見たり、ゴミ箱の中を空にしてみたりと繰り返し、安心したがまた時間が経つと、eclipseから同様のメッセージが!!!
ローカルディスクを見てみると、確かにまたなくなっている。。。
しかも、ずーっと見ていると、何もしていないのに少しずつ、勝手に容量がなくなっている!!!

これは、まさかまさかの

 「 ウ ィ ル ス 」というやつですか。。。

まあ、とりあえず、ウィルスとは確定したわけではないので、現在のローカルディスクの中で何がウェイトを占めているのか確認しようと、以下の「DiscInfo」というソフトをインストールしました。
http://www.forest.impress.co.jp/library/software/diskinfo/

んで、解析(自分の解析は約20分程かかりました。)

解析が終わり、中身を見てみると、xamppの中にウェイトを占めている者があるらしいので、確認。
どうやら、xamppの中の「tmp」フォルダに入っているものが相当大きいらしいとの発見。

んで、見てみると、「cachegrind.out~」と記載されたファイルがいっぱいあるではありませんか!!!
んで、調べてみると、どうやら、Xdebugでデバッグ作業を行っていると、ログを吐き出すらしく、そのログが「cachegrind.out」から始まるファイルになっているらしい。
ちなみに、自分のこのファイル数は57000ファイルぐらいありました。。。
これは消しても大丈夫らしいので、すぐさま消して、無事、大丈夫になりました!!

めでたし、めでたし。

CoreserverにZen Cartをインストール

Zen Cart

CoreserverにZen Cartをインストールする際のサーバー設定です。
なお、通常のZen Cartのインストール手順は終わっているものとします。

PHPセーフモードがOnになっていると、エラーでインストールできません。

トップディレクトリの.htaccessファイルに、次のように加えましょう。

 //既存の部分は触らない
 AddHandler application/x-httpd-phpcgi .php
 <IfModule mod_php5.c>
  php_flag register_globals Off
  php_flag safe_mode Off
  php_flag session.use_trans_sid 0
 </IfModule>
 PHP session.use_trans_sid = ON

という警告が出ていたら、/zc_install 内にphp.iniというファイル名で、下記の内容をアップロードします。

 session.use_trans_sid = 0
 

Core plotでタップした点のみ大きさを変えたい

iPhone

iPhoneアプリでグラフを表示させたいとき、メジャーなプラグインはCore plotだということで決定しました。
なので、Core plotでの点の加え方を以下で説明しました。

Core Plotでグラフに点を表示する

今回は、
&size(30){どうしてもCore plotでタップした点だけ大きさを変えたい!!できたら大きくしたい!};

という要望に応えます。

まず以下を書きます

 @interface CorePlotSampleViewController () {
      int selectedIndex_;
      BOOL didSelectedSymbol_;
 }

selectedIndex はタップされたグラフ上の点のindexです。
( グラフの点は配列に格納されています。)
didSelectedSymbol はグラフ上の点がタップされたかどうか否かです。
これがないとグラフが表示された時点で一番最後の点が大きくなってしまいます。
今回はタップしたときにタップした点を大きくしたいのです。

次に、以下のメソッドを加えます

 - (void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index withEvent:(UIEvent *)event

これは、グラフ上の点がタップされたときに呼ばれます。
全然呼ばれないんだけど!って人は、CPTScatterPlotのdelegateを確認してください。

次に、上記のメソッド内に以下を書きます。

 selectedIndex_ = index;
 didSelectedSymbol_ = TRUE;
 [plot reloadData];

selectedIndex_ にはタップされたindexを、
didSelectedSymbolをTRUEにすることで点がタップされた!ということをわからせます。

 [plot reloadData];

上記は、グラフを再描画しますよ ということです。
これでタップされた点のみ大きくするためには、グラフを描き直さないといけませんので必要になります。

次に、以下のメソッドを変更します。

 - (CPTPlotSymbol *)symbolForScatterPlot:(CPTScatterPlot *)plot recordIndex:(NSUInteger)index

以下のコードを加えてください。

 if (selectedIndex_ != NSNotFound
        && selectedIndex_ == index
        && didSelectedSymbol_)
 {
        plotSymbol.size = CGSizeMake( 16.0, 16.0);
 }

これの意味は、
点がタップされていて、かつタップされた点のindexがあって、かつそのindexと同じindexだったら、点の大きさを大きくするぜ!
ということになります。
&color(red){要はタップされた点だけ大きさを16にするよ、ということです。};

これでタップされた点のみ大きくすることができます。

&size(30){しかし、これだけだと大きくなった点を元の大きさに戻すことができません!!!};

ということで、以下のメソッドを加えてみましょう

 -(BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceUpEvent:(id)event atPoint:(CGPoint)point

これはグラフがタップされたときに呼ばれます。
呼ばれないんだけどまたdelegate!?という方その通りです!

グラフのベースとなる

 CPTXYPlotSpaceのインスタンス

または

 CPTGraphのインスタンス.defaultPlotSpace

のdelegateを確認してください。

これで呼ばれるようになったかと思いますので、以下のコードを書いてみてください。

 -(BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceUpEvent:(id)event atPoint:(CGPoint)point
 {
    
    if (!didSelectedSymbol_)
    {
        CPTScatterPlot *plot = (CPTScatterPlot*)[ graphHosting.hostedGraph plotWithIdentifier: あなたが名付けた名前];
    selectedIndex_ = NSNotFound;
    [plot reloadData];
    }
    
    didSelectedSymbol_ = FALSE;
    
 }

ここでは、大きくなった点をもとの大きさに戻すということをしています。

上から詳しく説明すると、
didSelectedSymbolのif文ですが、これがFALSEのときにその中の処理を行うということにしています。
点をタップしたときに呼ばれるメソッドの順番が、

 - (void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index withEvent:(UIEvent *)event
 ↓
 -(BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceUpEvent:(id)event atPoint:(CGPoint)point

です。
なので、if文がないと
タップされた点を大きくする → 大きくした点を元の大きさに戻す
の流れが一瞬で行われて、点を大きくした意味がなくなります。
なので、点がタップされたぞ!というフラグがたったときは何もしないようにします。

 CPTScatterPlot *plot = (CPTScatterPlot*)[ graphHosting.hostedGraph plotWithIdentifier: あなたが名付けた名前];

上記のコードは、plotWithIndentifier部分で指定したIdentifierと同じCPTScatterPlotを取得することができます。
なので、あらかじめグラフをつくるときに、点を表示させるCPTScatterPlotのインスタンスにidentifierを設定してください。

 sampleSymbolPlot.identifier = @"sample symbol plot";

上記のidentifierを指定した場合、

 CPTScatterPlot *plot = (CPTScatterPlot*)[ graphHosting.hostedGraph plotWithIdentifier: @"sample symbol plot"];

となります。

 selectedIndex_ = NSNotFound;

これでタップされた点のindexはないよ!ということになります。(本当は selectedIndex = 0 とほぼ同じです)

最後に、グラフを再描画することを忘れないでください。

 [plot reloadData];

また、if文の外に

 didSelectedSymbol_ = FALSE;

があるのは、点がタップされてif文を通過したあとにFALSEにしないといつまでもdidSelectedSymbolはTRUEなので、グラフ上の点以外をタップしてもif文の中は通らず、大きくなった点の大きさを元に戻すことができません。

Core Plotでグラフに点を表示する

iPhone

iPhoneアプリ内にグラフを加えたいとき、プラグインを使うかと思いますが、その中でもメジャーなのはCore plotではないでしょうか。
そうでなくても私はCore plotを使ったのでCore plotの説明します!

私はグラフに点を加えて、タップした点のみ他の点より大きさを変える、ということがしたいときがありました。

まずは、グラフに点を表示させる方法を書きます。

グラフに点を加えるメソッドがあります。

 - (CPTPlotSymbol *)symbolForScatterPlot:(CPTScatterPlot *)plot recordIndex:(NSUInteger)index

ここにグラフの点の設定を書いてあげれば万事OKです。

例えば、、、

 CPTMutableLineStyle *symbolLineStyle = [CPTMutableLineStyle lineStyle];
 symbolLineStyle.lineColor = [CPTColor blackColor];
 CPTPlotSymbol *plotSymbol = [CPTPlotSymbol ellipsePlotSymbol];
 plotSymbol.lineStyle = symbolLineStyle;
 plotSymbol.symbolType = CPTPlotSymbolTypeEllipse;
 plotSymbol.fill = [CPTFill fillWithColor: plot.dataLineStyle.lineColor];
 plotSymbol.size = CGSizeMake(6.0, 6.0);