uso

雑記いろいろ
★書いてある内容に保証は一切ありません。
 ご自身で判断をしてください。

[server] Kickstart

2010-04-29 17:04:14 | work
[Linux LDP(Linux/LeadHatのマニュアル文書化プロジェクトの日本語訳)]
http://www.linux.or.jp/JF/

■ KickStartとは

   キックスタートとは、RedHat Linux や Fedora Core のインストールを自動化する仕組みのこと。
   ローカルCD-ROM、ローカルハード ドライブ、NFS、FTP、HTTPなどを使って
   インストールすることができる。

   たくさんのPCにインストールする場合や評価などで繰り返しインストールする場合などは、
   キックスタートを使うと便利。

   X-Windowの場合、system-config-kickstartというツールで、GUIからKicStartファイルを生成できる
   http://www.atmarkit.co.jp/flinux/rensai/linuxtips/380autoinst.html

■ 手順
  1.キックスタートファイルを作成する
  2.キックスタートファイルでブートを作成するか、
   ネットワークでキックスタートファイルを使用できるようにする
  3.インストールツリーを使用できるようにする
  4.キックスタートインストールを開始する

■ キックスタートファイルについて
   
   キックスタートファイルはks.cfg というテキストファイルで、
   このファイルはRedHat系システムのインストーラであるanaconda
   (正体は python スクリプトを中心とした実行ファイル群)への指示書である。

   Kickstart Configuratorアプリケーションを使用するか、
   空白状態から書き入れて作成する。
   また、Linuxをインストールすると/root/anaconda-ks.cfgが作成され、
   インストールの設定が書き込まれる。  

   注意点
    セクションは決められた順序で指定する
    セクション内の項目は、指定されない限り、特定の順序である必要はない

  各セクションについて(必須でない項目は省略可能)
  必須項目が省略されている場合、インストール プログラムはユーザーに関連項目の回答を要求する

   コマンドセクション ・・・新規/上書きインストールの選択やインストールメディアの指定、
                パーティションの分割方法やタイムゾーンの指定などを行う
                
   %packages セクション・・・インストールしたいパッケージとパッケージグループを指定する
                パッケージ名を書くか、複数のパッケージを集めた
                パッケージグループ名書くことができる
                
                 @name : パッケージグループ name をインストール
                 +name : パッケージ name をインストール
                 -name : パッケージ name をインストールしない
                
   %pre と %post セクション(スクリプトセクション)
               
               %pre :インストール開始前に実行したいスクリプト
               %post :インストール終了後に実行したいスクリプトを書く
               
               %pre :chroot されない状態で、
               %post :chroot された状態で実行される書く

★インストール済みLinuxからキックスタートファイルを生成する方法
   
   参考
   http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a003kickstart.html
   
   デフォルトでは、キックスタートファイルを作成するツールが入っていないので、インストール
   # yum install system-config-kickstart
   
   ※これは本来、GUIツールなのだかが、下記のコマンドは使える
   
   ファイルを作成する
   # system-config-kickstart --generate ファイル名(~.cfg)
   
   ファイル確認する。以上。


■ ファイルフォーマット
   
  ・記号 (#) で始まる行は、コメントとして処理され、無視される
  ・コマンドセクション → %packagesセクション → スクリプトセクション の順で書く

■ コマンドセクション
  -------------------------------------------------------------------------------------------
   install
   url --url http://www.kric.gr.jp/yum/repos/centos/5/os/i386
   repo --name="CentOS-5 - Updates"
          --baseurl=http://www.kric.gr.jp/yum/repos/centos/5/updat   es/i386
   repo --name="CentOS-5 - Extras"
          --baseurl=http://www.kric.gr.jp/yum/repos/centos/5/extras/i386
   lang en_US.UTF-8
   keyboard jp106
   network --device eth0 --bootproto static --ip 192.168.200.90 --netmask 255.255.255.0
         --gateway 192.168.200.1 --nameserver 192.16   8.200.4 --hostname saga90
   rootpw --iscrypted $1$Af7usnoo$aMh1DEX.3WnwVU3WqX/eG.
   firewall --disabled
   authconfig --enableshadow --enablemd5
   selinux --disabled
   timezone Asia/Tokyo
   bootloader --location=mbr --driveorder=sda
   clearpart --all
   part /boot --fstype ext3 --size=100 --ondisk=sda
   part pv.2 --size=0 --grow --ondisk=sda
   volgroup VolGroup00 --pesize=32768 pv.2
   logvol swap --fstype swap --name=LogVol01
          --vgname=VolGroup00 --size=256 --grow --maxsize=512
   logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
   reboot
  ------------------------------------------------------------------------------------------
  
  コマンドの説明など
  
   install  :システムに対して、既存システムをアップグレードするのではなく、
          新しいシステムを インストールするように指示する
   
         以下の中からインストールのタイプを指定
         
         ・cdrom   システムの最初のCD-ROMドライブ
         
         ・harddrive ローカルドライブ上の vfat か
                ext2 ファイルシステムであるべき Red Hat インストールツリー
         
            --biospart= ~   (82 などから)インストールする BIOS パーティション
            --partition= ~   (sdb2 などから)インストールするパーティション
            --dir=~      インストールツリーの variant ディレクトリを含む
                                         ディレクトリ
            
           例)harddrive --partition=hdb2 --dir=/tmp/install-tree
           
         ・nfs    指定した NFSサーバからインストール
         
            --server=~     インストール元とするサーバー (ホスト名またはIP)
            --dir=~       インストールツリーの variant ディレクトリを含む
                                         ディレクトリ
            --opts=~      NFS エキスポートのマウント用に使用する
                                マウントオプション(オプション)
            
           例)nfs --server=nfsserver.example.com --dir=/tmp/install-tree
           
         ・url    FTP または HTTP 経由でリモートサーバ上にある
                            インストールツリーからのインストール
         
           例)url --url http://<server>/<dir>
   
   repo   :パッケージインストール用のソースとして使用できる追加の
                              yum レポジトリを設定(複数設定可)
   
         書式
           repo --name=<リポジトリID> --baseurl=<リポジトリの URL>
           repo --name=<リポジトリID> --mirrorlist=<ミラーリストの URL>
           
          ※「--baseurl」と「--mirrorlist」はどちらか一方だけしか設定できない
          
   lang en_US.UTF-8   :言語ロケールを指定
   keyboard jp106    :キーボード配列を指定
   timezone Asia/Tokyo  :タイムゾーンを指定、日本標準時は「Asia/Tokyo」
   
   network :ネットワーク情報を構成する
         
         ・--device ~      デバイスを正しく検出する為のヒント
         ・--bootproto=~     dhcp、bootp、 staticのいずれか
                      staticの場合、改行せずにネットワーク設定情報を書く
         ・--ip=や--gateway=~、--nameserver=~、--netmask=、--hostname=~など
   
   rootpw  :管理者ユーザ (root) のパスワードを設定
   
         ・--iscrypted ~     暗号化文字列の指定
         
   firewall :ファイアーウォールの設定
   
         無効 :--disable --disabled
         有効 :--enable  --enabled
         
         ポートごとの設定
          firewall --enabled --ssh --http --ftp  →SSHとHTTPとFTPのポートを開く
          firewall --enabled --port=12345:tcp   →TCP 12345 番ポートを開く
   
   authconfig:システム用の認証オプションを設定する
         
         ・--enablemd5           ユーザーのパスワードにMD5暗号化を使う
         ・--useshadow 又は --enableshadow シャドウパスワードを使う
         ・他にも、NIS / LDAP / Kerberos 5 / Hesiod / SMB 認証 に関する設定が可能
         
   
   selinux  :SELinux 状態を設定
         
         ・--disabled           無効にする
         ・その他モード選択(Enforcing/Permissive)
         
   
   bootloader :ブートローダのインストール方法を指定
          *コンピュータの起動直後に動作し、OSをディスクから読み込んで
                                    起動するプログラム
          
         ・--append=~          カーネルパラメータを指定
         ・--driveorder~         BIOSがブートする順序で最初になる
                                       ドライブを指定
         ・--location=          ブートローダを書き込む場所を指定
         ・--password=~         GRUB(使用する場合)パスワードを指定、
                          MD5で暗号化するなら--md5pass=~
   
   clearpart :新しいパーティションを作成する前に、システムからパーティションを削除する
         
         ・--all          すべてのパーティション削除
         ・--drives=~       削除するドライブを指定
         ・--linux         Linuxパーティションのみ削除
         ・--none          削除しない(省略時のデフォルト)




■ 参考サイト

  http://www.asahi-net.or.jp/~AA4T-NNGK/kickstart.html
  http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/ja-JP/Installation_Guide/index.html
  (Red Hat Enterprise Linux インスト-ルガイド)
  http://www.linuxmania.jp/kickstart.html



[DB] Oracle関数

2010-04-28 18:14:50 | work
Oracleの関数類

■ 文字列切り取り

 SUBSTR ( string , position [, length] )
 SUBSTRB ( string , position [, length] )

  string 対象の文字列
  position 正の場合 取り出したい文字列の開始位置(1~)
  position 0 の場合 1を指定したことと同じ
  position 負の場合 文字の末尾から逆向きに数えた位置
  length 取り出す文字列長(default 最後まで)
  
  参考:http://www.shift-the-oracle.com/sql/functions/substr.html
  
  
  
  
■ ビット演算
  
  BITAND ( number1 , number2 )
  return [ NUMBER ]
  
   number1 数値式 (NUMBER 型)
   number2 数値式 (NUMBER 型)
   
  数値式 number1 と number2 の論理積を NUMBER 型で戻す
  
 [使い方]
  数値式 number1 と number1 を バイナリデータとしてビットにし、
  その論理積(AND)処理を行い。その結果を数値として戻す。
  
  ※SQL 関数として BITAND 以外のビット演算は用意されていない。
   パッケージとしては UTL_RAW パッケージが利用できる。
  
  DECODE と BIN_TO_NUM 関数を併用して ON になっているビットの検出するなどの用途がある。
  → BITAND(bin_to_num(1,0,1), bin_to_num(0,0,1))
  
  bin_to_numはこの辺で確認
  http://www.shift-the-oracle.com/sql/functions/bin_to_num.html


■ 列項目を結合して一つの文字列として返す

  wmsys.wm_concat関数

  隠し関数、Oracle11gから使えるが、マニュアルには載っていないサポート外。
  なので、結局使わなかったが・・・。

  便利は便利。
  
  公式にはないので、この辺とか、
  Thttp://codezine.jp/article/detail/2690?p=2
  この辺でいろいろと書いてある
  http://www.drk7.jp/MT/archives/001395.html

  隠し関数は意外と多いらしい。

■ イラっとする挙動
  
  to_date(SYSDATE , 'yyyy/mm/dd hh24:mi:ss')

  答え : 2010/07/16

  あれ?
  
  SYSDATEはそのまま取ってくるとyyyy/mm/dd hh24:mi:ss形式になるらしい。
  まったく気がつかず、危うく問題になるとこだった。地味にイラっとする。。

  ちなみに、Oracleのバージョンによってはエラーになる。

  DATE型をto_dateにするとやはり変になる。SYSDATEが変になるのと似たような理由かな。
  DATE[14]のA(yyyy/mm/dd hh24:mi:ss)をyyyy/mm/dd形式でto_dateすると

  to_date(A,'yyyy/mm/dd')
  答え:0010/7/22

  to_charにするとちゃんと変換されるが、CHR型で返ってくる
  
  ふーん、と思いながら適当に使っていたら、後で痛い目にあった。

  たとえば、DATE[14]をyyyy/mm/ddで期間指定する場合。
  対象データが「2010/07/22 10:10:25」とかだったとすると、

  AAA between to_date('2010/07/20' , 'yyyy/mm/dd') and ('2010/07/25' , 'yyyy/mm/dd')
  だったら、別に問題なく、対象データが検索される。
  しかし、

  AAA between to_date('2010/07/22' , 'yyyy/mm/dd') and ('2010/07/22' , 'yyyy/mm/dd')
  だと、「2010/07/22 10:10:25」は引っかからない。
  これは、to_date('2010/07/22' , 'yyyy/mm/dd')=2010/07/22 00:00:00だから。
  2010/07/22 00:00:00~2010/07/22 00:00:00では、「2010/07/22 10:10:25」は引っかからない。
  
  対処方法
  深く考えず、適当にやっていたので、対処がバラバラだったと思う。
  ①末尾に00:00:00~23:59:59を付ける
  ②to_char(AAA , 'yyyy/mm/dd')で強制的に変換して、文字列検索する
  
  ②は気分的に嫌だったのでやらなかったような気がする・・・
  文字列比較すると大小関係がちゃんと検索されるのかなぁ・・・なんてことを考えて。



[DB] SQLメモ・疑問とか

2010-04-18 16:15:46 | util
チョイスタのOracleをしていての疑問や知らなかった機能とかのメモ
時々答えがあったりなかったり。。

■ MAX関数の疑問

  ① 同じ値が複数列にある場合、どの値を返すのか?

     名前   |   得点
     --------+---------
     Aさん   |    100
     Bさん   |     90
     Cさん   |    100
     Dさん   |     85
 
  select 名前 , MAX(得点) from 成績表 group by 名前
     →?
       MAXは複数の値を返す?

  ② NULLをMAX関数はどのように扱う?(①の疑問とややかぶっているが)


     名前   |   得点
     --------+---------
     Aさん   |    NULL
     Bさん   |    NULL
     Cさん   |    NULL
     Dさん   |    NULL
 
  select 名前 , MAX(得点) from 成績表 group by 名前
     →?

■ 副問い合わせ

  ① 副問合せが NULL を戻すと主問合せは1行も結果を戻さない
      → nvlとかで置き換えをすると大丈夫なのでは?

  ② INとNOT INの思わぬ違い

     "IN" を用いた場合、副問合せが返す複数の値のうち、一つだけがNULLでも主問合せは結果を返す
     "NOT IN" を用いた場合、副問合せが返す複数の値のうち、一つでもNULLがあれば主問合せは結果を返さない
    
■ NULLIF と NVL2

   NULLIF( 式1, 式2)は式1と式2を比較し、等しい場合はNULLを戻す
   NVL2(式, 値1, 値2) は、式の値がNULL以外 の場合、値1 を戻し、NULL の場合、値2を戻す

■ 切捨てとか
    CEIL(n)はn以上の最も小さい整数を戻します。
    FLOOR(n)はn以下の最も大きい整数を戻します。
    MOD(m,n)はmをnで割ったあまりを戻します。
    POWER(m,n)はmをn乗した値を戻します
    SQRT(n)はnの平方根を戻します。

■ 速度向上?
   order byをサブクエリと両方でする。早い、ような?

select a , b , c
from
  (select a , b , c from DD order by a , b , c)
order by a , b , c

■ distinct と order by

  一緒にするとエラーが出る(ORA-01791: SELECT式が無効です)

  例)
  select distinct A_1 , A_2
  from TblA left outer join TblC on (A_2 = TblC.Code)
  order by A_1 , C_order , A_2

  selectの中に、C_orderが無いと上記エラー
 
  なんで?
  distinctをする場合、order byの項目はselectに含める必要がある、と明記されている
  http://msdn.microsoft.com/ja-jp/library/Cc350739

  どうも、order byとdistinctは両方とも並べ替えをするらしい。
  両方あると、並べ替えが競合するのでエラーになる・・・というDBもある。
  http://support.microsoft.com/kb/96895/ja

  よくわからんが、同じ問題で悩んでいる人は多い。
  原理がわからなくてモヤっとするが、それほど困る問題でもない。例の場合は、C_orderをselectに入れとけばいい。
  (selectに含められないなら仕方ないが)

  この辺が仕様の答えになるの・・・かもしれない?
  http://oraclesqlpuzzle.hp.infoseek.co.jp/10-211.html
  http://oraclesqlpuzzle.hp.infoseek.co.jp/1-6.html

  ちなみに、この問題が起こったSQLは、最終的にこんな感じにした。
  (※ 欲しい答えを求めた結果であって、問題解決そのものではないので注意)

  select A_1 , A_2
  from(
    select ditinct A_1 , 0 as A_2
    from TblA
    
    union all
    
    select ditinct 0 as A_1 , A_2
    from TblA
  ) left outer join TblC on (TblA_2 = TblC.Code)
  order by A_1 , C_order , A_2

  たいそうなSQLになってしまったなぁ・・・。


■ union all と order byを併用するとエラーになる
  
  なるらしい。
  回避するには、全部のunion allの後に、order byをする。
  
  参考
  http://www.atmarkit.co.jp/fnetwork/rensai/sql09/sql1.html
  
  なんで?

■ 今さらオラクルSQLの基礎
  
  システム日付を取得する
  select SYSDATE from dual;
  
  
  


[utill] ASP(VB.net)技

2010-04-13 10:12:42 | util
■ コントロール名でループする

コントロール名が
 Item_1
 Item_2
 Item_3
 Item_4
と連続したIDを持っていると、ループしたくなる。

そんな時にはfindcontrol

***********************************
Dim L, U, i As Integer
Dim tx As System.Web.UI.WebControls.TextBox
L = LBound(dat)
U = UBound(dat)
For i = L To U
'コントロール名を探し出す
tx = FindControl("Item_" & CStr(i))
'見つかったコントロールのTextプロパティに代入
tx.Text = dat(i)
Next

******************引用終わり*******
参考:http://oshiete1.goo.ne.jp/qa2089081.htmlより抜粋

System.Web.UI.WebControls.TextBoxはASPのWeb用コントロールクラスなので、
Webでしか使えない、らしいが、普通にフォームとかにもありそうな機能、かもしれない。