12月 172020
 

テーブルが何バイト使っているか調べる

DBA権限が必要。

SELECT*FROM(SELECTowner,tablespace_name,segment_name,SUM(bytes) / (1024 * 1024 * 1024) GBFROMdba_segmentsGROUP BYowner,tablespace_name,segment_name)ORDER BYGB DESC

ログインユーザの持ち物に限るのであれば

SELECT*FROM(SELECTtablespace_name,segment_name,SUM(bytes) / (1024 * 1024 * 1024) GBFROMuser_segmentsGROUP BYtablespace_name,segment_name)ORDER BYGB DESC

表領域の残り空き容量を調べる

SELECTspace.tablespace_name,TRUNC(space.bytes      / (1024*1024*1024)*100)/100 "Capacity GB",TRUNC(free_space.bytes / (1024*1024*1024)*10000)/10000 "Free GB",TRUNC(free_space.bytes /space.bytes*100*10000)/10000 "Free Percentage"FROM(SELECTtablespace_name,SUM(bytes) bytesFROMdba_free_spaceGROUP BYtablespace_name)free_spaceLEFT JOIN(SELECTtablespace_name,SUM(bytes) bytesFROMdba_data_filesGROUP BYtablespace_name)spaceONfree_space.tablespace_name = space.tablespace_nameORDER BYspace.tablespace_name

スキーマが何バイト使っているか調べる

select*from(SELECTowner,SUM(bytes)/ (1024*1024*1024) "GB"FROMdba_segmentsGROUP BYowner)order by "GB" desc

スキーマが表領域単位で何バイト使っているか調べる

select*from(SELECTowner,tablespace_name,SUM(bytes)/ (1024*1024*1024) "GB"FROMdba_segmentsGROUP BYowner,tablespace_name)order by "GB" desc

SYSAUX表領域があふれる

こんな感じのアラートログがよく出る。

ORA-1688: unable to extend table SYS.WRH$_ACTIVE_SESSION_HISTORY partition WRH$_ACTIVE_2116900225_21393 by 128 in                 tablespace SYSAUXORA-1688: unable to extend table SYS.WRH$_ACTIVE_SMMON Flush encountered SYSAUX out of space error(1688).MMON (emergency) purge of WR snapshots (21385) and olderORA-1688: unable to extend table SYS.WRH$_ACTIVE_SESSION_HISTORY partition WRH$_ACTIVE_2116900225_21393 by 128 in                 tablespace SYSAUXORA-1688: unable to extend table SYS.WRH$_ACTIVE_SESSION_HISTORY partition WRH$_ACTIVE_2116900225_21393 by 128 in                 tablespace SYSAUX

これ、ちょっと調べたら http://oraworklog.wordpress.com/2010/07/24/handling-smoptstat-component-growth-in-sysaux-tablespace/ こういう話があって、Oracleのバグ?パッチも出ているらしいが…… 本番は大丈夫?

外部キーというかFKを全て無効化する

BEGINFOR c IN(SELECT c.owner, c.table_name, c.constraint_nameFROM user_constraints c, user_tables tWHERE c.table_name = t.table_nameAND c.status = 'ENABLED'AND c.constraint_type = 'R'ORDER BY c.constraint_type DESC)LOOPdbms_utility.exec_ddl_statement('alter table "' || c.owner || '"."' || c.table_name || '" disable constraint ' || c.constraint_name);END LOOP;END;/
このエントリーをはてなブックマークに追加
はてなブックマーク - oracle 容量等を調べる
[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]
[`grow` not found]
[`evernote` not found]

 Posted by at 9:58 AM
2月 212016
 

モデルを使っていない方法です。

cakephpのチェックボックス

cakephpのチェックボックス

コントローラ

Controller/SamplesController.php

App::uses('AppController', 'Controller');

class SamplesController extends AppController {

        $rets=array(
            0=>array('pid'=>100,'title'=>'a'),
            1=>array('pid'=>200,'title'=>'b'),
            2=>array('pid'=>300,'title'=>'c'),
            3=>array('pid'=>400,'title'=>'d'),
            4=>array('pid'=>500,'title'=>'e'),
            
        );
        
        $this->set('rets',$rets);     
        
        $this->modelClass = null;
}

解説

  1. フォームの表示データを$retsに入れてコントローラから渡しています。
  2. $this->modelClass = null;を設定することで、モデルを読み込まないようにしている。

ビュー

View/samples/index.ctp

<div>
    <h3>Samples</h3>
    <table>
    <thead>
        <tr>
            <th>ckeck</th>
            <th>pid</th>
            <th>title</th>
        </tr>
    </thead>
    <tbody>
   <?php
    echo $this->Form->create(null,
      array('type'=>'post','action'=>'.')); ?>
    <?php foreach ($rets as $ret): ?>
        <tr>
            <td><?php 
            echo $this->Form->checkbox('pid.',array('value'=>$ret['pid'],'hiddenField' => false,'checked'=> @in_array($ret['pid'], $this->request->data['Sample']['pid']))); 

            ?></td>
            <td><?= h($ret['pid']) ?></td>
            <td><?= h($ret['title']) ?></td>
   
        </tr>
    <?php endforeach; ?>
    </tbody>
    </table>
   
<?php    
    echo $this->Form->end("送信");
  ?>

解説

  1. $this->Form->create()の第一引数は、モデルを使わないのでnullに。
  2. $this->Form->checkbox()の第一引数の名前にピリオドをつけることによって、nameの最後に[]がついて、data[Sample][pid][]のような配列になる。
    これを、’pid[]’と入れると、data[Sample][pid[]]のようになり、正常になっておかしくなる。
  3. $this->Form->checkbox()の第二引数の配列に’value’で値を設定できる。
  4. $this->Form->checkbox()の第二引数の配列にhiddenFieldをfalseに設定することで、 余分なhidden フィールドが生成されるのを防ぐ。
  5. $this->Form->checkbox()の第二引数の配列のcheckedは、フォーム送信後の選択状態の表示。結果は配列になり、checkboxの標準処理ではチェックできないため、in_arrayで値が選択済みかをチェック。初期状態ではrequest->dataがセットされなくてNoticeが出るので@で警告抑制。

または$this->Form->checkboxの部分を$this->Form->inputにすることもできる。

echo $this->Form->input('pid.', 
                    array(
                    'type'=>'checkbox',
                    'value'=>$ret['pid'],
                    'checked'=> @in_array($ret['pid'], $this->request->data['Sample']['pid'])
                    )
                   );

ネオビットさんを参考にさせていただきました。
http://www.neobit.jp/archives/436


このエントリーをはてなブックマークに追加
はてなブックマーク - cakephp2.xチェックボックスの使いかた

[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]
[`grow` not found]
[`evernote` not found]


2月 132016
 

シリアライズ可能なcURLのラッパークラス[参照]:http://qiita.com/mpyw/items/c65fb4ec4cef80909a47

使ってみたらすばらしいラッパークラスです。

これもすぐにできなかったのでめも。

全部同じディレクトリにファイルをつくったと過程。

  1. class cURLをcURL.phpとして保存。
  2. class NicoNicoをNicoNico.phpとして、保存。NicoNico.phpにcURL.phpをrequireする。
    require_once("cURL.php");
  3. index.phpを作り、その中で実装する。
    require_once("NicoNico.php");
    $nico = new NicoNico('aaaaa@bbbbb.cc.jp', 'xxxxxxx');
    var_dump($nico-&gt;getHistory());

これでOK!

視聴履歴が長期間ないと「履歴取得に失敗しました」エラーが表示されるので、その場合は、ためしに視聴する。

このエントリーをはてなブックマークに追加
はてなブックマーク - シリアライズ可能なcURLのラッパークラスをつかってみた

[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]
[`grow` not found]
[`evernote` not found]


2月 132016
 

PHP cURLの色々な使い方を参考にcURLで接続をこころみたものの、すぐつまづいて、ドはまりしたので、メモ。

以下の部分、file_get_contents()なら取得できるのに、cURLで取得できない。

$url = "http://www.pixiv.net/login.php";
$ch = curl_init(); // はじめ

//オプション
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
var_dump($html);
curl_close($ch); //終了

このURLがリダイレクトされるので、リダイレクト後のアドレスに変えてみる。

https://www.secure.pixiv.net/login.php?return_to=0

エラーをはきださせる。

curl_errnoなどを使って、直前のcurl_exec()のエラーを出力。

if($errno = curl_errno($ch)) {
  $error_message = curl_strerror($errno);
  echo "cURL error ({$errno}):\n {$error_message}";
}

curl: (60) Peer certificate cannot be authenticated with known CA certificates

サーバー証明書の検証がうまくいっていないために、データが取得できないようだ。

cURL はサーバー証明書の検証を行わないように設定

setoptに、以下のように設定。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

これでhttpsのデータも取得できるようになった。

このエントリーをはてなブックマークに追加
はてなブックマーク - file_get_contents()なら取得できるのにCurlでうまくいかない

[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]
[`grow` not found]
[`evernote` not found]


 Posted by at 4:23 PM  Tagged with:
5月 252013
 

コマンドプロンプトからの方法よりあっさりできたのでメモ。

  1. http://pear.php.net/go-pear.phar をブラウザで表示して、go-pear.pharをダウンロード。
  2. go-pear.pharをc:\xampp\php\に保存
  3. xamppコントロールパネルを開いて、「shell」のボタンを押す。
    xampp_pear
  4. カレントディレクトリを[c:\xampp\php]に移動。
    1. cd c:\xampp\php
  5. 「php go-pear.phar」と入力しエンター
  6. Are you installing a system-wide PEAR or a local copy?の質問にエンター
  7. 次のような感じであればエンター
    xampp_pear_1
    11が違う場合は、
    11を入力して、エンター
    次に、c:\xampp\php\pear.iniを入力してエンター

これで完了。

インストールを確認したければ、pearinfo()を実行してみる。

  1. シェルでpear_infoをインストールする。
    1. pear install pear_info
  2. インストールが完了したら、c:\xampp\htdocs\にpearinfo.phpを作成。
    以下のような内容を入力する。

    1. <?php
      require_once("PEAR/Info.php");$info = new PEAR_Info();
      $info->show();
      ?>
  3. ブラウザで「http://localhost/pearinfo.php」を開く。
    エラーは出るかもしれないが、一番下にpearinfoが表示されればOK.
    xampp_pear_2

 

このエントリーをはてなブックマークに追加
はてなブックマーク - xamppにpearをインストール windows

[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]
[`grow` not found]
[`evernote` not found]


7月 152012
 

全部、32bit版でインストールしたら動きました。
xamppのバージョンは、XAMPP version 1.7.7

【ImageMagickをダウンロード】
Windows Binary Releaseから
「Win32 dynamic at 16 bits-per-pixel」をダウンロードする。
Imagemagick 公式サイトでは VC10 でビルドされている。だから VC9 でビルドされたものを見つける必要がある。VC9でビルドされた最後のバージョンは ImageMagick 6.6.2-10だ。
ということなので、ImageMagick-6.6.2-10-Q16-windows-dll.exeをダウンロード。
設置場所は、パスの間に空白が入らないような場所にする。
[C:\ImageMagick-X.X.X-Q16]など
Install PerlMagick for ActiveState Perlにはチェックを入れない

【パスをとおす】
コンピューターを右クリック。
システムの詳細設定→環境変数→システム環境変数の変数「path」の値のはじめに、[C:\ImageMagick-X.X.X-Q16]の場所、を追加。最後に「;」をつける。
【php_imagick_ts.dllをダウンロード】
http://valokuva.org/builds/
からphp_imagick_ts.dllをダウンロード。
(thread safeの場合:xamppのhelp→ReadMe。PHPのバージョンの〔〕内にかいてあります。)
phpのextension_dir以下に置く。
php.iniのextension_dirで、php_imagick_ts.dllを有効にする記述を追記する。
[PECL]
extension=php_imagick_ts.dll
Imagick動作しない。
imagick 基本的な使用法ができない。
phpからimagickでjpgを操作できない。
こんなことがやっと解決した!!!

このエントリーをはてなブックマークに追加
はてなブックマーク - imagick インストール windows7 64bit xampp php

[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]
[`grow` not found]
[`evernote` not found]


7月 022012
 

ブラウザを使って、プログラムを実行するのをタスクスケジューラを使ってやるには。
プログラム/スクリプトに、以下のように、ブラウザの実行ファイルのパスを入れる。
“c:\Program Files\Internet Explorer\iexplore.exe”
引数の追加(オプション)に、表示させるアドレス
http://XXXX/XXXX.php

このエントリーをはてなブックマークに追加
はてなブックマーク - タスクスケジューラ ブラウザを使ってプログラムを実行する

[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]
[`grow` not found]
[`evernote` not found]


6月 222012
 

php.iniの設定で、
extension=php_openssl.dll
xamppの場合は、xampp/phpから以下のファイルをxampp/apache/binにコピーして上書きする。
libeay32.dll
ssleay32.dll

このエントリーをはてなブックマークに追加
はてなブックマーク - pear HTTP_CLIENT https取得できない

[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]
[`grow` not found]
[`evernote` not found]


6月 212012
 

php5.3では、DateTimeクラスを使った日付の計算ができる。
//本日
$today = new DateTime();
echo $today->format(‘Y-m-d’);
//もととなる日付
$release = new DateTime(‘20120619’);
$diff = $release->diff($today);
echo $diff->format(‘%a’);
//差
$diff_d = $diff->format(‘%a’);
echo $diff_d;
*Windows版のphp5.3.5などのバージョンだと、DateTime::diff()で日付の差が6015になるバグが報告されています。バージョンアップするしかないです。
http://bugs.php.net/bug.php?id=51184

このエントリーをはてなブックマークに追加
はてなブックマーク - DateTimeを使った日付の差

[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]
[`grow` not found]
[`evernote` not found]