MW211 EXIT

devlog
PostgreSQL/(新)連番を前詰に振り直す
2013年10月19日
┌──────────────────────────────────────┐
│UPDATE 表                                                                   │
│    SET 列 = (SELECT COUNT(*)                                               │
│                  FROM 表 AS 別表                                           │
│                  WHERE 別表.列 <= 表.列);                                  │
├──────────────────────────────────────┤
│SELECT setval ('AutoNumber用列名', (SELECT COUNT(*) FROM 表), true);        │
└──────────────────────────────────────┘

以下、検証例。

テスト用データを作成する。
┌──────────────────────────────────────┐
│CREATE TABLE "test"                                                         │
│(                                                                           │
│    "id" bigserial NOT NULL,                                                │
│    "no" integer   NOT NULL,                                      ┌─┬─┐│
│    PRIMARY KEY ("id")                                            │id│no││
│);                                                                ├─┼─┤│
├─────────────────────────────────│ 1│ 1│┤
│INSERT INTO "test" ("no") VALUES (1);                             │ 2│ 2││
│INSERT INTO "test" ("no") VALUES (2);                             │ 3│ 3││
│INSERT INTO "test" ("no") VALUES (3);                             │ 4│ 4││
│INSERT INTO "test" ("no") VALUES (4);                             │ 5│ 5││
│INSERT INTO "test" ("no") VALUES (5);                             │ 6│ 6││
│INSERT INTO "test" ("no") VALUES (6);                             │ 7│ 7││
│INSERT INTO "test" ("no") VALUES (7);                             │ 8│ 8││
│INSERT INTO "test" ("no") VALUES (8);                             └─┴─┘│
└──────────────────────────────────────┘

欠番をつくる。
┌─────────────────────────────────┌─┬─┐┐
│DELETE FROM "test" WHERE "id" = 1;                                │id│no││
│DELETE FROM "test" WHERE "id" = 3;                                ├─┼─┤│
│DELETE FROM "test" WHERE "id" = 5;                                │ 2│ 2││
│DELETE FROM "test" WHERE "id" = 7;                                │ 4│ 4││
└─────────────────────────────────│ 6│ 6│┘
                                                                    │ 8│ 8│
                                                                    └─┴─┘

前詰に更新し直す。
┌─────────────────────────────────┌─┬─┐┐
│UPDATE "test"                                                     │id│no││
│    SET "id" = (SELECT COUNT(*)                                   ├─┼─┤│
│                         FROM "test" AS "as_test"                 │ 1│ 2││
│                         WHERE "as_test"."id" <= "test"."id");    │ 2│ 4││
└─────────────────────────────────│ 3│ 6│┘
                                                                    │ 4│ 8│
                                                                    └─┴─┘

最終連番が「8」のままなので、「4」に戻す。
┌──────────────────────────────────────┐
│SELECT setval ('test_id_seq', (SELECT COUNT(*) FROM "test"), true);         │
└──────────────────────────────────────┘

試しに新たなデータを追加すると、適切に末尾に追加されることが確認できる。
┌─────────────────────────────────┌─┬─┐┐
│INSERT INTO "test" ("no") VALUES (99);                            │id│no││
└─────────────────────────────────├─┼─┤┘
                                                                    │ 1│ 2│
                                                                    │ 2│ 4│
                                                                    │ 3│ 6│
                                                                    │ 4│ 8│
                                                                    │ 5│99│
                                                                    └─┴─┘
分類:PostgreSQL
VC++/再頒布可能パッケージ
2013年10月18日
「Microsoft Visual C++ 2010 再頒布可能パッケージ (x86)」ってのがある。

「Visual C++で開発されたアプリケーションを
  Visual C++ 2010がインストールされていないコンピューター上で
  実行するために必要な、Visual C++ライブラリの
  ランタイムコンポーネントをインストールします。」

ってことらしい。

「vcredist_x86.exe」ってのを、マイクロソフトのサイトからダウンロードして
インストールすればよいらしい。
分類:C/C++
Windows7/リモートデスクトップ
2013年10月17日
各エディション毎にリモートデスクトップを使えるか否かは以下の通り。
┌────────────┬─────┬─────┐
│                        │ 接続する │接続される│
├────────────┼─────┼─────┤
│Windows 7 Enterprise    │    ○    │    ○    │
│Windows 7 Ultimate      │    ○    │    ○    │
│Windows 7 Professional  │    ○    │    ○    │
├────────────┼─────┼─────┤
│Windows 7 Home Premium  │    ○    │    ×    │
│Windows 7 Home Basic    │    ○    │    ×    │
│Windows 7 Starter       │    ○    │    ×    │
└────────────┴─────┴─────┘
分類:Windows
Windows/リモートデスクトップの設定
2013年10月16日
「コンピューター」を右クリックして「プロパティ」を選択。
そこから「リモートの設定」を選択。
以下のように設定する
┌──────────────────────────────────────┐
│システムのプロパティ                                                        │
├──────────────────────────────────────┤
│                                                              ┌────┐  │
│┌──────────────────────────────┘リモート└┐│
││┌リモートデスクトップ────────────────────────┐││
│││オプションをクリックし、必要がある場合は接続できるユーザーを        │││
│││指定してください                                                    │││
│││  ○このコンピューターへの接続を許可しない                          │││
│││  ●リモートデスクトップを実行しているコンピューターからの          │││
│││    接続を許可する                                                  │││
│││    (セキュリティのレベルは低くなります)                            │││
│││  ○ネットワークレベル認証でリモートデスクトップを実行している      │││
│││    コンピュータからのみ接続を許可する                              │││
│││    (セキュリティのレベルは高くなります)                            │││
│││                                                    ┌──────┐│││
│││                                                    │ユーザの選択││││
│││                                                    └──────┘│││
││└──────────────────────────────────┘││
│└────────────────────────────────────┘│
│                                  ┌─────┐┌─────┐┌─────┐│
│                                  │    OK    ││キャンセル││   適用   ││
│                                  └─────┘└─────┘└─────┘│
└──────────────────────────────────────┘
分類:Windows
PECL/パッケージインストール手順
2013年10月15日
まず、PECLがPHPに標準添付されていないか確認する。
┌──────────────────────────────────────┐
│C:\Program Files (x86)\PHP>php -i                                           │
└──────────────────────────────────────┘
上記で、PHPのインストール情報を確認し、キーワード検索する。

「zip」パッケージはインストール済みだった。よって、インストール不要。
┌──────────────────────────────────────┐
│C:\Program Files (x86)\PHP>php -i                                           │
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│zip                                                                         │
│                                                                            │
│Zip => enabled                                                              │
│Extension Version => $Id: 75f98b591f6e5b656786b38e42f0ca759a8eca80 $        │
│Zip version => 1.11.0                                                       │
│Libzip version => 0.10.1                                                    │
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
└──────────────────────────────────────┘
インストールしてしまうと二重呼出エラーとなってしまう。
┌──────────────────────────────────────┐
│Warning: Module 'zip' already loaded in Unknown on line 0                   │
└──────────────────────────────────────┘

そこで、(使い道はよくわからないが)該当のない
「trader」パッケージを対象にしてみる。

まず、未インストールである実験をしてみる。
「trader」パッケージの関数「trader_sum()」を実行してみる。
┌──────────────────────────────────────┐
│var_dump(trader_sum(array(2,4)));                                           │
├──────────────────────────────────────┤
│Fatal error: Call to undefined function trader_sum() in …                  │
└──────────────────────────────────────┘
未定義エラーが発生する。

さて、インストール。
まず、「http://pecl.php.net」で検索して、ダウンロードコーナーを探し、
Windows版のdllをダウンロードする。
今回の場合、「php_trader-0.3.0-5.3-ts-vc9-x86.zip」が入手され
この中に「php_trader.dll」が入っていた。

このdllを「C:\Program Files (x86)\PHP\ext」に置く。
で、「php.ini」を以下に書き換えて、Apache再起動。
┌──────────────────────────────────────┐
│[PHP]                                                                       │
│;;;;;;;;;;;;;;;;;;                                                          │
│; Fopen wrappers ;                                                          │
│;;;;;;;;;;;;;;;;;;                                                          │
│extension_dir="C:\Program Files (x86)\PHP\ext"                              │
│;;;;;;;;;;;;;;;;;;;;;;                                                      │
│; Dynamic Extensions ;                                                      │
│;;;;;;;;;;;;;;;;;;;;;;                                                      │
│extension=php_trader.dll                                                    │
└──────────────────────────────────────┘

さっきの命令を再度実行すると、見事に結果が返ってきた。
┌──────────────────────────────────────┐
│var_dump(trader_sum(array(2,4)));                                           │
├──────────────────────────────────────┤
│array(1) { [1]=> float(6) }                                                 │
└──────────────────────────────────────┘
(なにやっているかはわからないけどね)
とにかく、インストール成功!

アンインストールするには、dllの実体を削除して、
「php.ini」の「extension=」を削除してしまえばよい。
※「extension_dir=」はいじらない方がよさそうだ
※Apacheを停止しないと、dllは掴まれているの削除できないようだ
分類:PECL
PECL/実録あるパッケージのインストール
2013年10月14日
「zip」パッケージをインストールした手順(といっても後述の通りオチあり)。

まず、「http://pecl.php.net」で検索して、ダウンロードコーナーを探す。

「http://pecl.php.net/package/zip/1.12.2/windows」と判明したいので
今回は「PHP 5.3.17」にインストールする予定なので
「PHP 5.3」の「5.3 Thread Safe (TS) x86」を選択し
「php_zip-1.12.2-5.3-ts-vc9-x86.zip」をダウンロードする。

これを解凍し、中から「php_zip.dll」を取り出して
「C:\Program Files (x86)\PHP\ext」に置く。

「php.ini」を以下に書き換えて、Apache再起動。
┌──────────────────────────────────────┐
│[PHP]                                                                       │
│;;;;;;;;;;;;;;;;;;                                                          │
│; Fopen wrappers ;                                                          │
│;;;;;;;;;;;;;;;;;;                                                          │
│extension_dir="C:\Program Files (x86)\PHP\ext"                              │
└──────────────────────────────────────┘

ちなみに、「php.ini」に指定を追加する必要はないようだ。
┌──────────────────────────────────────┐
│[PHP]                                                                       │
│;;;;;;;;;;;;;;;;;;;;;;                                                      │
│; Dynamic Extensions ;                                                      │
│;;;;;;;;;;;;;;;;;;;;;;                                                      │
│extension=php_zip.dll                                                       │
└──────────────────────────────────────┘
もし、追加すると二重呼出エラーが発生する。
┌──────────────────────────────────────┐
│C:\Program Files (x86)\PHP>php -i|clip                                      │
│Warning: Module 'zip' already loaded in Unknown on line 0                   │
└──────────────────────────────────────┘

以下のようなテストプログラムを動かすと、ZIP圧縮ファイルの中身一覧が表示される。
┌──────────────────────────────────────┐
│$zip = zip_open('C:\xxxx\xxxx.zip');                                        │
│$entry = zip_read($zip);                                                    │
│while ($entry) {                                                            │
│    echo zip_entry_name($entry) . "\n";                                     │
│    $entry = zip_read($zip);                                                │
│}                                                                           │
│zip_close($zip);                                                            │
└──────────────────────────────────────┘

っていうか、「php_zip.dll」を削除してみたが、上記はそのまま動く。

よくよく調べてみると、標準でPHPに付随していたようだ。
┌──────────────────────────────────────┐
│C:\Program Files (x86)\PHP>php -i|clip                                      │
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│zip                                                                         │
│                                                                            │
│Zip => enabled                                                              │
│Extension Version => $Id: 75f98b591f6e5b656786b38e42f0ca759a8eca80 $        │
│Zip version => 1.11.0                                                       │
│Libzip version => 0.10.1                                                    │
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
└──────────────────────────────────────┘
ということで、他で仕切り直し。

ちなみに、「pecl install zip」でインストールを試みるとエラーとなる。
┌──────────────────────────────────────┐
│C:\Program Files (x86)\PHP>pecl install zip                                 │
│downloading zip-1.10.2.tgz ...                                              │
│Starting to download zip-1.10.2.tgz (236,912 bytes)                         │
│.................................................done: 236,912 bytes        │
│61 source files, building                                                   │
│WARNING: php_bin .\php.exe appears to have a suffix .exe, but config        │
│ variable php_suffix does not match                                         │
│ERROR: The DSP zip.dsp does not exist.                                      │
└──────────────────────────────────────┘
分類:PECL
PHP/タイムゾーンの設定
2013年10月13日
「php.ini」で定義するか。
┌─────────────────────────────────────┐
│[Date]                                                                    │
│date.timezone = Asia/Tokyo                                                │
└─────────────────────────────────────┘

プログラム中で定義するか。
┌─────────────────────────────────────┐
│date_default_timezone_set('Asia/Tokyo');                                  │
└─────────────────────────────────────┘
分類:PHP
PECL/インストール手順まとめ
2013年10月12日
インストールには、直接インストールコマンドを実行して
一気通貫でやってしまうタイプと、一旦ダウンロードしてから、
インストールするタイプがある。
一旦ダウンロードして行うタイプだと、オフラインでインストールができる。
#インストーラ入手はオンラインだが
┌────────────┬────────────┬────────────┐
│                        │        PECL本体        │        PECL部品        │
├────────────┼────────────┼────────────┤
│ネット上からインストール│(go-pear.bat)           │pecl install 部品       │
├────────────┼────────────┼────────────┤
│ネット上からダウンロード│         (不明)         │pecl download 部品      │
├────────────┼────────────┼────────────┤
│ファイルからインストール│         (不明)         │pecl install ファイル   │
├────────────┼────────────┼────────────┤
│アンインストール        │(pear uninstall pear)   │pecl install 部品       │
├────────────┼────────────┼────────────┤
│インストール状況確認    │pecl help               │pecl list               │
└────────────┴────────────┴────────────┘
PECL本体については、PEAR本体のインストール時に同時にインストールされ
アンインストール時に同時にアンインストールされてしまうようだ。

なお、「pecl install ファイル」を行うと
「ERROR: The DSP ■.dsp does not exist.」というエラーとなる。
「pecl install 部品」でも過程が合流するので同じくエラーに。

ダウンロードしてきたファイルが実行ファイルではないためなのか?
「pecl build」や「pecl package」コマンドを実行してもうまくいかない。

何か根本的な誤認をしてそうだ。。。
分類:PECL
PEAR/インストール手順まとめ
2013年10月11日
インストールには、直接インストールコマンドを実行して
一気通貫でやってしまうタイプと、一旦ダウンロードしてから、
インストールするタイプがある。
一旦ダウンロードして行うタイプだと、オフラインでインストールができる。
#インストーラ入手はオンラインだが
┌────────────┬────────────┬────────────┐
│                        │        PEAR本体        │        PEAR部品        │
├────────────┼────────────┼────────────┤
│ネット上からインストール│go-pear.bat             │pear install 部品       │
├────────────┼────────────┼────────────┤
│ネット上からダウンロード│pear download pear      │pear download 部品      │
├────────────┼────────────┼────────────┤
│ファイルからインストール│         (不明)         │pear install ファイル   │
├────────────┼────────────┼────────────┤
│アンインストール        │pear uninstall pear     │pear uninstall 部品     │
├────────────┼────────────┼────────────┤
│インストール状況確認    │pear help               │pear list               │
└────────────┴────────────┴────────────┘
PEAR本体は「PEAR-1.9.4.tgz」みたいな形でダウンロードでき
gzip形式なので中身も見れるのだが(インストール後のフォルダ構成っぽい)、
そのままコピーしてもインストールは完了しないっぽい(実際にはやってない)。
分類:PEAR
PECL/インストール物件を確保
2013年10月10日
┌──────────────────────────────────────┐
│pecl download-all                                                           │
└──────────────────────────────────────┘
を実行すれば、インストール物件を(取得できるものだけ)全部ダウンロードできる。
分類:PECL
前へ 1 2 3 次へ