2014年9月16日火曜日

pg_dump のパスワードを聞かれないようにする

1) .pgpass(pgpass.conf) を作成/編集する

 Windows の場合 => %APPDATA%\postgresql\pgpass.conf
 Unix/Linux の場合 => ~/.pgpass (chmod 0600 に設定しておく)

host:port:username:password:dbname

2) # pg_dump を実行する(パスワードを聞かれない)

pg_dump -h host -p 5432 -u username dbname > "c:\hoge.backup"

2014年8月7日木曜日

SQL Server 2012 トランザクションログの圧縮

とりあえずメモ。
TODO: あとで説明入れる。

BACKUP DATABASE test_db TO DISK = N'NUL';
--- 実際にバックアップする場合
--- BACKUP DATABASE test_db TO DISK='d:\backup\air.bak' WITH INIT

EXEC sp_helpfile;

BACKUP LOG test_db TO DISK = N'NUL'

DBCC SHRINKFILE ('test_db_log', 1);


--- 以下はタスク実行のコマンド
sqlcmd -S [.\SQLEXPRESS] -U [ユーザー名] -P [パスワード] -i [d:\backup.sql]  > [d:\backup.log]

2014年7月12日土曜日

CentOS 5.6 に Nginx をインストールする

CentOS 5.6 に Nginx をインストールしてみる。

■ Nginx のリポジトリから rpm を取得して、そのままインストール
# rpm -ivh http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm


# yum install nginx

■ http://wiki.nginx.org/InstallJa からリポジトリを追加してインストール

1) リポジトリを作成して以下を記述
 #vi /etc/yum.repos.d/nginx.repo 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
2) YUM でインストール
# yum install nginx

設定についてはまた暇を見つけて書いていきます。

2014年7月1日火曜日

SQL Server 2012 で IDENTITY の値を再設定する

SQL Server 2012 にて、IDENTITY の値をリセットまたは任意の値にする場合、 以下のクエリを実行する。

--- テーブル hoges の IDENTITY の値を 1 に再設定する。
DBCC CHECKIDENT ('hoges', RESEED, 1) WITH NO_INFOMSGS

 --- テーブル hoges の IDENTITY の値を確認する。
DBCC CHECKIDENT ('hoges', NORESEED );

2014年6月9日月曜日

ケロリン桶

昔よく銭湯で見かけたケロリン桶

ケロリンファン倶楽部
http://www.naigai-ph.co.jp/special/kerorin/goods.html


タオルやマットもある。

ぴよりん

この前名古屋駅で見かけた「ぴよりん」。
http://www.jrt-food-service.co.jp/piyorin/

ひよこサブレの亜種かと思ったら、いろいろ手の込んだお菓子(要冷蔵)で、
季節限定ものやサブレもある模様。

ぴよりん (抹茶)
# http://www.jrt-food-service.co.jp/piyorin/detail34.html より 

Access 2010 / Access 2013 (SQL Server を使用時)のメモ

Access 2013 で ADP がなくなり、 SQL Server からどのようにデータを取得するか困る。
クライアントに ODBC を登録してリンクテーブルする方法にしようとするも、台数が多く面倒なので、
以下 Access から ODBC に登録せずに SQL Server からデータを読み込む方法を検討中。

a) パススルークエリを使用する
Microsoft の以下「パススルー クエリを使用してデータベース サーバーで SQL を処理する」を参照 Access 2010, 2013 でもほぼ同じ
http://office.microsoft.com/ja-jp/access-help/HA010206488.aspx


b) クエリでテーブルを以下のように指定する(DAO、クエリ で使用)
例: データベース名: TESTDB,  ユーザー: test_user パスワード: test_pwd テーブル名: samples の場合
SELECT s.* FROM [ODBC;DSN=TESTDB;DATABASE=TESTDB;UID=test_user;PWD=test_pwd].samples s 

c) VBA から ADO を使って直接取得する


フォームの Recordset に直接 c) で設定した Recordset を入れたところエラーになるので、
b) の方法で設定した DAO の Recordset をフォームに設定するようにした。

普通にリンクテーブルを使うよりも若干表示等が早くなった気がするものの、この方法が良いかどうかは検証および検討中。

なおフォーム以外のコントローラーの Recordsource に対しては ADO は従来通り使える模様。

2014年5月5日月曜日

CM やらどこかでよく聴くクラシック曲


リンク先は Youtube :リンク切れてたらごめんなさい。

2013年3月12日火曜日

スマホ:画面サイズを合わせる(回転、Android、iphone 対応)


以下の bwidth = 640 は作成しているサイトの幅を指定する。
幅が 960px だったら、 bwidth = 960 とする。

<meta name="viewport" content="width=device-width">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script>
$(window).bind('resize load', function(){
    var rw = $(window).width();

    var swidth = 320;  // 小さい機種などの解像度
    var bwidth = 640; // 自分のサイトのサイズ

    if(rw <= swidth) {
        $("html").css("zoom" , bwidth / swidth);
    }
    else {
        $("html").css("zoom" , rw / bwidth );
    }
    $("body").css("-webkit-text-size-adjust" , "100%");
});
</script>

一応要テスト。

2012年8月27日月曜日

IIS 7 (Windows 2008 r2 64ビット) + PHP 5.3 に OCI8 をインストールする

手順自体は、

1) Oracle の HP から Oracle Client Instant をダウンロードする
* ユーザー登録が必要
* OS が 64bit でも PHP の OCI8 を使う場合は 32bit 版のOracle Client Instant (basic) をダウンロードする事!!

2) 適当な所に解凍 (c:/oracle 等)


3) 以下の環境変数に上記 2) の値を追加
Path, NLS_LANG, LD_LIBRARY_PATH
詳しくは PHP のマニュアル参照 http://php.net/manual/ja/oci8.installation.php 


4) php.ini の extension のコメントを外す

extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client

5) Windows を再起動して上記 3) の環境変数を反映させる



6) phpinfo 関数などで OCI8 が利用できるか確認。「OCI8」の記述があれば使用できる


[注意]
上記 1) にもあるように PHP で OCI8 関数を使用する場合には Oracle Client Instant は 32bit 版をDLすること!これに気づかず長い事試行錯誤してしまった‥。



2012年5月14日月曜日

PHP 5.3 で CakePHP 1.3 でエラー: DEPRECATED が表示される


cake/libs/configure.php ファイルで error_reporting(E_ALL) 関数の後ろに追加

  error_reporting(E_ALL);

  // 追加
  if (error_reporting() > 6143) {
  error_reporting(E_ALL & ~(E_DEPRECATED|E_STRICT|E_NOTICE));
  }
  // 追加

大体 290~300行目くらい?

2012年4月23日月曜日

ECCUBE 2.11.5 (MySQL) で管理ページにログインできない場合


ECCUBE を開発環境から本番環境にアップした際に、管理ページにログインできなくなってしまった。
ID、PWD は間違っていないのにログインができず非常に困った。

原因は、DB を dump した際の dtb_member テーブルのパスワードと Salt の値が開発環境と異なるためらしい。
以下はその場しのぎ的な処理。
dtb_member の login_id, password, salt を更新する SQL を生成する関数。

function sfGetAuthInfo ($loginid, $password) {
$sql = "";
$result = "";
if ( AUTH_TYPE == 'PLAIN') {
$result = $password;
}
else {
$_tmp = sprintf("%s:%s", $password, AUTH_MAGIC);
$result = hash_hmac(PASSWORD_HASH_ALGOS, $_tmp, AUTH_MAGIC);
}
$sql = sprintf("UPDATE dtb_member SET login_id='%s', password='%s', salt='%s' WHERE id=2", $loginid, $result, AUTH_MAGIC);
return $sql;
}
実行は以下のように実行する。

$loginid = "ログイン名";
$password = "パスワード";
$sql = sfGetAuthInfo ( $loginid, $password )
echo $sql;

上記を ECCUBE 内のどこかのファイル( html/index.php など)で実行し、結果に出力される SQL をMySQL上で実行して、本番環境用のパスワードに書き換える。




2012年4月5日木曜日

Apache の access_log に PHP の情報を表示する

■目的:
自前会員システムの会員毎のアクセスログを収集したい。

■やりたいこと:
Apache の access_log に PHP で取得される一部の変数/セッションを書き出しできるようにしたい。

■ PHP の Apache 関数を使う。
http://jp.php.net/manual/ja/function.apache-note.php


PHP の変数が出力できれば、
acces_log -> シェルで会員ID(上記 apache_note で登録する変数 )毎に集計(cron) -> 集計結果を HTML or DB に出力という流れを試してみる。

2012年3月30日金曜日

ASP.NET ( IBatis.NET ) から SQL Server 2008 への接続について

IBatis.NET にて、

# sqlmap.config

<provider name="sqlServer2.0"/>
<dataSource name="lec2" connectionString="Persist Security Info=False;Data source=(local)\SQLEXPRESS;Initial Catalog=xxxx;User ID=xxxxx;Password=xxxxx;" />

# provider.config

<provider
     name="sqlServer2.0"
     enabled="true"
     description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V3.5"
     assemblyName="System.Data, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"
     connectionClass="System.Data.SqlClient.SqlConnection"
     commandClass="System.Data.SqlClient.SqlCommand"
     parameterClass="System.Data.SqlClient.SqlParameter"
     parameterDbTypeClass="System.Data.SqlDbType"
     parameterDbTypeProperty="SqlDbType"
     dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
     commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
     usePositionalParameters = "false"
     useParameterPrefixInSql = "true"
     useParameterPrefixInParameter = "true"
     parameterPrefix="@"
     allowMARS="true"
/>
上記でも接続できなかったので Windows ファイアーウォールで TCP/UDP 1433 の確認と「SQL Server 構成ツール」の 「SQL Server 構成マネージャー」のTCPおよび名前付きパイプが有効になっているか確認。
> どうも TCP は関係無かった模様…

それでも繋がらなかったので色々と見直し悩んだ結果、上記 sqlmap.config の dataSource の接続文字列で data source=(local)\SQLEXPRESS; の所を data source=(local)/SQLEXPRESS; としていたのが原因と分かる。

気づくまで 1時間30分ぐらい掛かった・・・。

環境: Windows 2008 r2 (64bit), IIS 7.5, SQL Server 2008 r2 Express, .NET Framework 3.5

2012年3月29日木曜日

ECCUBE の文字化け

[1] ECCUBEインストール後に 管理ページで「基本情報管理」->「SHOPマスター」ページで文字化けしていた。(課税規則、都道府県など)
    => 原因: MySQL の データベースの文字コードが Latin1 になっていた…。
    => 対応: MySQL の DB を UTF8へ変更して CREATE DATABASE する。

[2] ECCUBE を再インストールしても文字化けが直らない
    => phpMyAdmin や コンソールでは文字化けしていない。
    => ECCube の data/cache 内にマスタデータのキャッシュが残っていたので、一旦ファイルを削除する。
    => 文字化けが直った。

■ECCUBE サーバー環境

  EC-CUBEバージョン:2.11.5
  PHP情報:5.3.10
  DB情報:MySQL 5.5.20
  OS情報:Linux localhost.localdomain 2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 12:45:52 EST 2012 i686 Apache/2.2.3 (CentOS)

2012年3月22日木曜日

IIS7 で require や include で Permission Error が出る

Windows でのアクセス権の設定を見直す。


  • PHP の実行ファイル( php.exe ) のアクセス権
  • 公開フォルダのアクセス権


上記を IUSER_[コンピューター名] の読み取りと実行ができるようにしておく。

IIS 7 での SQL Server 2008 への接続

接続するときに

[Microsoft][SQL Server Native Client 10.0][SQL Server]ユーザー はログインできませんでした 

と出る場合、DBのログインに接続時のユーザーが設定されていない場合があるので要確認。

2012年3月19日月曜日

アセンブリは部分的に信頼されている呼び出し元を許可しません

「System.Security.SecurityException: アセンブリは部分的に信頼されている呼び出し元を許可しません。」

■怪しい対応

  • IIS 7 の機能ビューの ".NET信頼レベル" を "Full" にすると出ない。
  • 確かにエラーは出なくなったが…。


■アセンブリによる対応

  • IIS 7 の機能ビューの ".NET信頼レベル" を "midium"。
  • アセンブリに AllowPartiallyTrustedCallers 属性を設定する。 <Assembly: Security.AllowPartiallyTrustedCallers()>


…らしいが、正直理屈が分からん…。

再度詳しく調べる必要あり。

64 bit 環境での ASP.NET 2.0 の実行

32 bit 環境で動作している ASP.NET 2.0 のプロジェクトを 64 bit 環境 の IIS にデプロイすると、

ファイルまたはアセンブリ 'xxxxxx'、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました

と出る。これは 32 bit でコンパイルした dll が混じっていると出るエラーのようなので、以下のいずれかで対処する。


  • 64 bit でコンパイルし直す(他所のライブラリを使用している場合は 64 bit 版に差替える)
  • IIS の Application Pool を "ASP.NET 2 Classic" に選択し、「詳細設定」で "32 ビット アプリケーションの有効化 " を "True" にする

上記のいずれかで対応する。