カテゴリ: サーバ関係, SIP/Asterisk, 自宅鯖

ページ: << 1 2 3 4 5 6 7 8 9 10 11 ... 15 >>

PHP 5.3環境でphpPgAdminが動かない

パーマリンク 2009/10/03 12:07:49 著者: kumaold メール
カテゴリ: サーバ関係, プログラミング, PHP

中央特快の車中で暇なのでテスト開発環境のメンテを実施中。

PostgreSQLのテーブル作成・編集などに便利に使っているphpPgAdminがPHP 5.3環境だとエラーを吐いて画面が出なかったのでその対処法を調査しました。

手元の環境だと、このようなエラーが出て一向にログインできません。

Deprecated: Assigning the return value of new by reference is deprecated


そこで、classes/Misc.php の 342行目を以下のように修正。

$data =& new $_type($_connection->conn);
  ↓
$data = new $_type($_connection->conn);

newの戻り値を参照で受け取ろうとするとこうなるようです。
PHP4環境でなければ =& は = に置き換えた方がよさそうです。


なんとか東京駅に到着するまでに原因が追求できてよかったです。

4061329154電車の中でできる情報処理―その考え方のABC (ブルーバックス)
講談社 1992-04

ラジオ録音鯖の入れ替え

パーマリンク 2009/09/09 21:29:00 著者: kumaold メール
カテゴリ: デジタルモノ, 自宅鯖

例の地元の廃品無料回収の場所に置いてあったPCがちょうどよさげだったので、昨日現場の東南アジア系の男に交渉して1台頂いてきました。

ちょうど自宅のラジオ録音サーバが時々録音不良が発生する上に、ファンの音がうるさくなっていたので置き換えを検討していたところでした。


状態的にはCDドライブの接触が悪いほかは特に問題はなく、思っていたよりも音も静かなので寝床の横に置いとくにもピッタリです。

メモリは64MBだったので旧PCから移植して192MB、HDDはまるごと交換してWindows XPを修復インストールしたら普通に起動してくれました。

PentiumII 333MHzではもたつく動作もPentiumIII 667MHzでは余裕!


旧PCはさすがにゴミなので部品取りにして、残骸はまた捨ててきました。
掘り出し物もありそうなんでまたそのうち行ってみるかな。

THE修理 なんでも自分で直す本〈vol.3〉家電を修理する本 (THE修理なんでも自分で直す本 (Vol.3))THE修理 なんでも自分で直す本〈vol.3〉家電を修理する本 (THE修理なんでも自分で直す本 (Vol.3))
地球丸 2005-08
おすすめ平均

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

パラレルポートで家電制御!?

パーマリンク 2009/08/09 23:09:14 著者: kumaold メール
カテゴリ: デジタルモノ, 自宅鯖

久々に土日丸ごと暇でやることがなかったので、日曜電子工作+プログラミングでひとつ作ってみました。


前々から外出先などから、PCから家電製品のスイッチOn/Offを制御できれば便利だと思っていました。(自宅鯖のフリーズ時などに)

そこでその実用化テストも兼ねて、手持ちのFMトランスミッタの電源の制御を取り扱いが簡単なパラレルポート経由でPCから行うことにしました。


もちろん直接接続しても制御できるほどの電流・電圧ではないので、相応の回路の設計が必要になります。

久々に回路図をフリーソフトBSch3Vで起こしてみました。

直接ON/OFFできるようにジャンパピンを横に付けました。

トランスミッタにかかる電圧の変動は?という点については三端子レギュレータで5Vに落としているので考えなくて結構です。

完成図

さて、あとはプログラムです。

この手のはLinuxマシンの方が楽なので、いつもの仮想CentOSサーバ上です。
VirtualPCの設定→LPT1→物理パラレルポートで物理ポートと接続できます。

gccの通る環境なら特別なライブラリは必要ないかと思います。

#include <stdio.h>
#include <stdlib.h>
#include <sys/io.h>
#define OUT_PORT 0x378 /* 出力ポート: パラレルポート */

int main(int argc, char* argv[]) {
    int i, port, time;

    if (argc < 3) {
        puts("引数が不足しています。\n");
        return 1;
    }
    
    port = strtol(argv[1], NULL, 16);
    time = atoi(argv[2]);
    
    if (port < 0x00 || port > 0xff) {
        puts("0x00 - 0xffの範囲で設定してください。\n");        
        return 1;
    }
    /* とりあえず30日まで */
    if (time < 0 || time > 60 * 60 * 24 * 30) {
        puts("有効な秒数を入力してください。\n");
        return 1;
    }

    /* I/Oポート初期化 */
    ioperm(OUT_PORT, 8, 1);
    /* 指定ポートに指定時間(秒)出力 */
    outb(port, OUT_PORT);
    sleep(time);
    return 0;
}

これをコンパイルして実行しても、通常ユーザでのポート操作はセグメンテーション違反となり実行できません。

そこでroot権限で実行させるようにsetuidしときす。
ついでにパスの通っているところにもっていきましょう。

gcc -o paracon paracon.c
cp paracon /usr/bin
chmod +s /usr/bin/paracon

これでparaconコマンドを叩くと接続されたものを制御できます。

使い方:paracon 出力データ16進 出力時間(秒)

出力データは出力ポートが8個あるので、H/Lを1/0で表したものを16進数に変換して渡してやります。(0x00~0xff)

paracon 0x01 10
# 8ビット中最下位ビットを10秒間Hにする

なお、プログラムが終了しても出力状態は保持され続けるので、それが嫌な場合は毎度最後に0x00を出力するといいかもしれません。


こんな感じで、無事にパラレルポートからの制御ができました。

今回は小電力なのでトランジスタだけを使いましたが、SSRなどのリレーに繋げば100Vの家電製品の制御も簡単にできるかと思います。
主電源スイッチで電源ON/OFFできるものに限りますが。

パソコンのレガシィI/O活用大全―割り込みとDMAからシリアル/パラレル・ポート、FDD/IDEインターフェースまで (ハードウェアデザインシリーズ)パソコンのレガシィI/O活用大全―割り込みとDMAからシリアル/パラレル・ポート、FDD/IDEインターフェースまで (ハードウェアデザインシリーズ)
CQ出版 2001-07
おすすめ平均
type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

<< 1 2 3 4 5 6 7 8 9 10 11 ... 15 >>

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2017年3月
 << <   > >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

検索

XMLフィード

16ブログ     powered by b2evolution free blog software