2014年2月15日土曜日

Windows Server 2008 R2 にSP1を適用するとIISの証明書バインドが外れる

Windows Server 2008 R2 にSP1を適用したらIIS上のSSLページが
見れなくなったので調査したところ、証明書のバインドが外れて
ました。

バインドしなおして解決。

環境:
Windows Server 2008 R2 → Windows Server 2008 R2 SP1
IIS7.5

2014年2月1日土曜日

Oracle get ddl with specifying schemas. スキーマ指定DDL取得SQL

オラクルで、指定スキーマのDDLを取得するSQLスクリプト。
スクリプト中の USER1, USER2, USER3 の箇所を、
取得したいスキーマ名に変更してください。

-- パラメータ設定
set lines  1000
set pages 0
set long   10000
set heading off
set trimspool on
set feedback off
set longchunk   10000

BEGIN
  -- 終端に;を出力
  -- output terminal character like ';'
  DBMS_METADATA.SET_TRANSFORM_PARAM(
    DBMS_METADATA.SESSION_TRANSFORM,
    'SQLTERMINATOR',
    TRUE);
END;
/

-- DDL of tables
spool ddl_table.sql
select
  dbms_metadata.get_ddl('TABLE',table_name,owner)
from
  all_tables
where
  owner in ( 'USER1','USER2','USER3' )
order by
  owner, table_name
;
spool off;

-- DDL of views
spool ddl_views.sql
select
  dbms_metadata.get_ddl('VIEW',view_name,owner)
from
  all_views
where
  owner in ( 'USER1','USER2','USER3' )
order by
  owner, view_name
;
spool off;

-- DDL of indexes
spool ddl_indexes.sql
select
  dbms_metadata.get_ddl('INDEX',index_name,owner)
from
  all_tables
where
  owner in ( 'USER1','USER2','USER3' )
order by
  owner, index_name
;
spool off;

-- DDL of constraints
spool ddl_constraints.sql
  select
    dbms_metadata.get_ddl('CONSTRAINT',constraint_name,owner)
  from
    all_constraints
  where
    constraint_type = 'P'
    and owner in ( 'USER1','USER2','USER3' )
  order by
    owner, constraint_name
union all
  select
    dbms_metadata.get_ddl('CONSTRAINT',constraint_name,owner)
  from
    all_constraints
  where
    constraint_type = 'C'
    and substr(constraint_name,1,4)!='SYS_'
    and owner in ( 'USER1','USER2','USER3' )
  order by
    owner, constraint_name
union all
  select
    -- take attention, foreign key is 'REF_CONSTRAINT'
    dbms_metadata.get_ddl('REF_CONSTRAINT',constraint_name,owner)
  from
    all_constraints
  where
    constraint_type = 'R'
    and owner in ( 'USER1','USER2','USER3' )
  order by
    owner, constraint_name
union all
  select
    dbms_metadata.get_ddl('CONSTRAINT',constraint_name,owner)
  from
    all_constraints
  where
    constraint_type not in ( 'P','R','C')
    and owner in ( 'USER1','USER2','USER3' )
  order by
    owner, constraint_name
;
spool off;

-- DDL of package
spool ddl_package.sql
select
  dbms_metadata.get_ddl('PACKAGE',name,owner)
from
  (select
     distinct owner, name
   from
     all_source
   where
     type = 'PACKAGE'
     and owner in ( 'USER1','USER2','USER3' )
   )
order by
  owner, name
;
spool off;

-- DDL of package body
spool ddl_package_body.sql
select
  dbms_metadata.get_ddl('PACKAGE_BODY',name,owner)
from
  (select
     distinct owner, name
   from
     all_source
   where
     type = 'PACKAGE'
     and owner in ( 'USER1','USER2','USER3' )
   )
order by
  owner, name
;
spool off;

-- 全オブジェクト型は以下のページを参照。
-- and so on, all of object types are below..
-- http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_metada.htm#BGBFJFHA

IE10だと の背景色が効かない

IE10だど、<input>タグでタイプが「file」を使用すると、
背景色を設定しても反映されない現象があります。
<input id="btnFile" style="background-color: blue;" type="file" >
→IE10だとファイルパス表示部の背景色が灰色になってしまう。。。

対応方法としては「::-ms-value」を使用します。

CSSサンプル
#btnFile::-ms-value {
  background-color: blue;
}

※「-ms-value」を使用しない場合、ファイルパス表示部と
「ファイル選択」ボタンのわずかな隙間の色が変わっている
ことがわかります。
何なんでしょうか?

2014年1月19日日曜日

「入れ替え」機能

A項目とB項目を入れ替える機能。

A項目にはクリップボードなど、B項目には選択したテキストなどが当てはまる。

例えば、「猫は我輩である。」という文を「我輩は猫である。」に
修正したい場合。

これまでのコピー&ペースト操作だと、
最初に「猫」を切り取って(カット)、
「我輩」の前か後ろに貼り付け(ペースト)、
次に「我輩」を切り取って、「猫」が最初にあった箇所へ
貼り付ける、という手順になる。

これをスマホやタブレットでやると実にじれったいのである。

「入れ替え」機能だと、
最初に「猫」を切り取って(カット)、
「我輩」と「入れ替え」すると我輩が切り取られて、代わりに「猫」が貼り付けられる。
次に「猫」が最初にあった箇所へ貼り付けすると
「我輩」が貼り付けられる、となり、かなり操作がすっきりして
より直感的になる。


スマホやタブレット端末ではより必要な機能なのだと思うのだが、
誰も発表・実装しないのでここに発表しておくことにする。
2012/5/20

2013年12月22日日曜日

ASP.NET発行できない時

ASP.NETでファイルシステムとしてWeb発行する場合に失敗するのは、
セキュリティソフトのリアルタイム保護が原因かもしれません。

発生する条件:
    「プリコンパイル済みサイトを更新可能にする」にチェックを入れると発生

発生するエラー: 
    ファイルをコピーできません。要求された操作はユーザーマップセクションで開いたファイルは実行できません

aspnet_compiler の出力先ディレクトリを保護対象から外す設定などすれば
うまくいくことがありますが、勿論セキュリティの観点から問題ないか
会社などに確認の上、実施してください。
(出力先ディレクトリは、「Web発行アクティビティ」の「詳細を表示」を
クリックすれば発行時のアウトプットが表示されるのでそこから
見つけることができます。)

それでもだめなら上記ログ中のaspnet_compiler のコマンドをコピーして、
末尾に「 -f」オプションを付与してコマンドプロンプトで実行する手もあります。

※Visual Studio上で発行しても、ごく稀に発行が成功します。
また、コマンドライン上で実施して失敗したことは今のところありません。
もしかすると、セキュリティソフトとはまた別の原因なのかもしれません。

環境
Windows 7
Visual Studio 2012 update 4

(VS2012 update 4にしてから調子が悪いような気がする。
(Webアプリではなく)Webサイトの発行もウィザード形式になっちゃったし。
update 4 にする前は細かい設定ができる形式だったと思うが。。)

ASP.NET が Internet Explorer の検出に失敗する

ASP.NET (IIS7.5)上のページをIE10で見ようとしたら、「_doPostBack」でエラーが発生。

調べたらユーザーエージェント判定スクリプトの問題だった。
IE10が検出できず、ASP.NETで自動生成する_doPostBack」を含むJavascriptが
取得できてなかったということ。

http://msdn.microsoft.com/ja-jp/library/ie/hh869299(v=vs.85).aspx

パッチ当てて解決。

環境:
Windows Server 2008 R2
IIS7.5
.NET framework 2.0
.NET framework 3.5
.NET framework 4.0

なお、Windows Server 2008 R2 に SP1 を当ててしまうと、上記パッチが
当てられなくなります。

.NET 4.0を使用してるASP.NETページはSP1当てる前からか、SP1当ててからか、
どの段階で対応されてるか調査してませんが、IE10は検出できてました。

しかし、.NET 2.0ページだとSP1当ててからIE10対応パッチを当てようとしても
当てられず、取り残されます。

解決策としては、MSの言うとおり
・適用済みパッチ(SP1)を削除して、上記パッチを当てて、SP1を当てなおす。
とするか、
・.NET 2.0 の ie.browser ファイルをIE10対応版に置換して、
 aspnet_regbrowsers -i コマンドを発行する。
とするか等です。

Service Packとなると、さすがに消すのは怖いので今回は後者を実施しました。
手順:
・SP1未適用マシン(試験機など)にIE10対応パッチ(.NET 2.0用)を適用。
・以下のファイルをノートパッドなどで開き、IE10対応版になってるか確認。
   C:\windows\Microsoft.NET\Framework\v2.0.50727\Config\Browsers\ie.browser

 ※ファイル中、「IE10plus」などの記述があればOK。

・以下のフォルダごとコピーして何処かへ退避。
   C:\windows\Microsoft.NET\Framework\v2.0.50727\Config\Browsers
 (32bitも64bitも一緒でしたのでどちらでもよいです。違ってたらそれぞれ
  取得してください。v2.0.xxx の箇所は.NET 2.0 の実際のフォルダを指定
  してください。)
・IE10対応させたいマシンの「Browsers」フォルダを、前手順で取得した
 もので置き換える。(32bit, 64bit 両方とも。)
 32bit :    C:\windows\Microsoft.NET\Framework\v2.0.50727\Config\Browsers
 64bit :    C:\windows\Microsoft.NET\Framework64\v2.0.50727\Config\Browsers

・コマンドプロンプトを開き、以下のコマンドを実行。
cd C:\windows\Microsoft.NET\Framework\v2.0.50727
aspnet_regbrowsers -i

cd C:\windows\Microsoft.NET\Framework64\v2.0.50727
aspnet_regbrowsers -i

以上。

2013年11月28日木曜日

ASP.NET + Enterprise Library + Oracle 文字化け mojibake

ASP.NET + Enterprise Library でoracle を使用する際に文字化けする場合は、
レジストリかシステム環境変数かレジストリに NLS_LANG が設定されてるか
確認しましょう。

Oracle 10.2.0.4 を windows server 2008 (x64) にインストールすると
レジストリにNLS_LANG が設定されないバグがあるようです。
(krown:138062)

Enterprise Library に限らずシステムユーザーやIIS_IUSRSなど
他のユーザー権限で実行されるプログラムを動作してる
環境全般に言えることですが。