SQLメモ
SQLメモ
■カラムの型の変更
ALTER TABLE my_table MODIFY (COL_A NUMBER(10));
■カラム名の変更
ALTER TABLE my_table RENAME COLUMN time_col TO date_col ;
■カラムの削除
ALTER TABLE my_table DROP (char_col , number_col)
-- 以下はオプションなので必須ではない
CASCADE CONSTRAINT INVALIDATE;
■テーブル名の変更
ALTER TABLE table_A RENAME TO table_B;
■テーブルにつけた制約名の変更
ALTER TABLE my_table RENAME CONSTRAINT Z00X1T_PK TO Z00X2T_PK;
■カラムの追加(位置指定なし)
ALTER TABLE my_table ADD (
char_col VARCHAR2(200 byte) DEFAULT 'xxx' NOT NULL ,
number_col NUMBER(10)
);
■テーブルからテーブル作成
CREATE TABLE table_name AS SELECT * FROM other_table;
■同じ定義のテーブルへ全コピー
INSERT into tblB SELECT * FROM tblA;
■シノニム作成
<XXXX側でシノニム作成>
CREATE OR REPLACE SYNONYM "XXXX"."TABLE_A" FOR "YYYY"."TABLE_B";
<YYYY側でXXXXにselect権限を付与>
GRANT SELECT ON "XXXX"."TABLE_A" TO YYYY ;
■シーケンス作成
CREATE SEQUENCE "XXXX"."XXXXSEQ_001"
MINVALUE 1 MAXVALUE 9999999999
INCREMENT BY 1
START WITH 1
NOCACHE NOORDER CYCLE ;
■登録日時とユーザの更新
update my_table set TS = '2017-12-22', USR = 'SYSTEM';
■PL/SQLで例外を発生させる
RAISE_APPLICATION_ERROR(-20000, '独自のエラーメッセージ');
■Date型での検索
select begin_time, end_time, undotsn from dba_hist_undostat
where begin_time >= to_date('2018/02/05 00:00:00', 'yyyy/mm/dd hh24:mi:ss')
and begin_time <= to_date('2018/02/05 23:59:59', 'yyyy/mm/dd hh24:mi:ss');
■日付書式
to_char(SYSDATE, 'YYYY"年"MM"月"DD"日"')
--2018年05月23日
--FM 接頭辞 字詰めモード (スペース/ゼロを挿入するのを無効にする)
select to_char(now(),'YYYY/FMmm/FMdd');
--2009/7/3
■BLOBのカラムの表領域変更
alter table テーブル名 move
lob(BLOBカラム名) store as ( tablespace テーブルスペース名);
Python + Selenium 環境構築
Python + Selenium 環境構築
0.はじめに
できるだけシンプルに動作できるように導入するのはPythonとSelenium、WebDriverだけにとどめる。
参考:https://www.inet-solutions.jp/technology/python-selenium/#i
公式:https://seleniumhq.github.io/selenium/docs/api/py/api.html
非公式(日本語):https://kurozumi.github.io/selenium-python/api.html
1.Pythonのインストール
今回は、3.6.5をインストールした
2.Seleniumのインストール
pip install selenium
* pipはPythonのパッケージ管理ツール。標準でインストールされる。
* seleniumは今回は3.11.0がインストールされた。
* Proxy環境では、HTTP_PROXYを設定する必要あり。
3.WebDriverのインストール
ブラウザを操作するには、各ブラウザに合わせてドライバーを用意する必要があります。
今回は Chrome を使用するので 公式サイトから ChromeDriver をダウンロードします。
4.IEのセキュリティ設定
インターネットオプションの「セキュリティ」タブで、各ゾーンの「保護モードを有効にする」の設定を
合わせておかないと、find_element_by_id系のメソッドでNoSuchElementExceptionなどエラーが発生した。
http://livedoor.blogimg.jp/kmiwa_project/imgs/8/2/82cbdbba.jpg
※今回はローカルイントラネットと信頼済みサイトの「保護モードを有効にする」のチェックを付けた。
5.レジストリの設定
IEの場合はこれをやっておいたほうが安定するらしい?
https://bitwave.showcase-tv.com/selenium%E3%81%A7internet-explorer11%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99%E6%96%B9%E6%B3%95/
レジストリにキーがなければ作成し、iexplore.exeというDWORD値を作成し、値を0にします。
(32bitの場合)
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BFCACHE
(64bitの場合)
\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BFCACHE
6.その他
7.参考文献
■Seleniumクイックリファレンス
http://www.seleniumqref.com/
■Python unittestフレームワーク
https://docs.python.jp/2/library/unittest.html#module-unittest
SandcastleによるAPIリファレンス作成方法
SandcastleによるAPIリファレンス作成方法
注意点として、 SHFB(Sandcastle本体)のインストールだけでなく、Microsoft Build Tools 2015もインストールしないと起動しませんでした。
参考ページ
■C# VB.Net におけるソースコードのドキュメント化(Sandcastle)
https://qiita.com/icoxfog417/items/fa66d49cb7800e0880e5
■SHFB (Sandcastle Help File Builder)の設定関連
http://cercopes-z.com/SHFB/index.html
■Microsoft Build Tools 2015
https://www.microsoft.com/ja-JP/download/details.aspx?id=48159
Selenium環境作成
Selenium インストールメモ
1.Selenium IDEのインストール
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
1.1 FireFoxをインストール
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
FireFoxをインストールします。
Selenium IDEは、FireFoxバージョン55から対応していないので、54とかを入れること。
1.2 Selenium IDEをインストール
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
FireFoxのプラグインで、Selenium IDEをインストールする。
2.環境セットアップ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
2.1 RubyやChrome Driverをインストール
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
以下を参考に、RubyやChrome Driver、selenium webdriverをインストールする。
■windowsならruby + selenium webdriverも環境設定は15分で終わる
http://katsulog.tech/if-windows-ruby-selenium-webdriver-also-ending-the-configuration-in-15-minutes/
2.2 Gemをインストール
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
RubyのGemはパッケージ管理ツールでインストールしたほうがいいので、bundlerをインストールする。
#bundlerのインストール
gem install bundler
#Gemfileの作成
bundle init
#Gemfile編集
以下を追加する
gem "selenium-webdriver"
gem "rspec"
#Gemインストール
bundle install
3.シナリオの作成
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
FireFoxでテストケース相当の操作をして、シナリオを作成します。
①FireFoxを起動する。
②ツール‐Selenium IDEを起動する(記録が始まる)
③FireFoxで操作する。(これがシナリオになるので)
④Selenium IDEで記録を停止させる
⑤Selenium IDEでテストケースをエクスポートする(Ruby/RSpec/WebDriver)
このテストケースはそのままでは実行できません。以下の変換を行います。
⑥シナリオ内の、${receiver}→@driverへ置換する。
⑦@driver = Selenium::WebDriver.for :firefox →:chrome へ置換します。
4 RSpecによるテスト実行
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
作成したテストケースを以下のように配置します。
(specフォルダ配下に配置)
\---spec
test.rb
シナリオを実行します。
rspec spec/test.rb
大容量のダミーファイルを作成
各OSで、わりと大きめのダミーファイルを容量指定して作成する方法です。
Windows XPではコマンド・プロンプト上で利用できるツールとして、
「fsutil.exe」というコマンドが用意されている。
Windowsの場合、fsutilコマンドを使います。
// 1Gのファイルを作る場合 C:\>fsutil file createnew 1G.file 1073741824 ファイル C:\1G.file が作成されました
Linuxの場合、ddコマンドを使います。
# dd if=/dev/zero of=1G.file bs=1M count=1000 1000+0 records in 1000+0 records out 1048576000 bytes (1.0 GB) copied, 38.5669 seconds, 27.2 MB/s
MacOS(UNIX)も、ddコマンドで作成できます。
bsにMの指定が出来ない違いがあるだけで、あとはLinuxの場合と一緒な感じ。
$ dd if=/dev/zero of=1G.file bs=1024000 count=1000 1000+0 records in 1000+0 records out 1024000000 bytes transferred in 27.326705 secs (37472502 bytes/sec)
バッチでコマンドの戻り値取得
rem test.bat @echo off import_file.exe aaa.csv @if "%ERRORLEVEL%" == "0" goto good :fail echo Execution Failed echo return value = %ERRORLEVEL% goto end :good echo Execution Succeded echo return value = %ERRORLEVEL% goto end :end
.NET上アプリケーションのメモリ解析
http://moated.wordpress.com/2011/07/30/windows-net%E4%B8%...
.NET用のアプリケーションのパフォーマンスを改善する必要があって調べもの。
メモリ関連については、以下の記事が参考になった。
これ以外の記事もあって、VADumpやCLR profilerが紹介されていた。
Investigating Memory Issues
Claudio Caldato and Maoni Stephens
http://msdn.microsoft.com/en-us/magazine/cc163528.aspx
windbgやメモリダンプを使う方法が前半で少しだけ出てくる。
perfmonを使う方法のまとめ。
% Time in GC。これが50%を超えたままだと、managed heapがどうなっているのか見た方がいい。10%を超えていないならまず心配いらない。
Allocated Bytes/secを見る。メモリのallocation rate。正確ではないのでallocateしていても0になることがある。表示と数値の更新速度が違うからだ。低い数値は0になると考えておく。
85000バイト以上の大きいオブジェクトを作っている可能性があれば、Large Object Heapサイズを見る。
オブジェクトの生存期間が短ければGen 0のガーベジコレクションで回収される。
# Gen 0 Collection、# Gen 1 Collection、# Gen 2 Collectionは、プロセス開始からの各世代のGCの回数集計値。Gen 0, Gen 1は短時間で終了する。Gen2 は全部見るのでここで回収されるとコストが高い。
Gen 1 の回数とGen 2の回数のざっくりとした指標は10対1。
Allocation rateが高くないのにGCが多い(% Time in GCが大きい)ときは、次の世代に生き残るオブジェクトが大きいことがある。Promoted Memory from Gen 0とPromoted Memory from Gen 1でそれがわかる。特にGen 1からpromoteされてGen 2に上がり、そこで回収されるとパフォーマンスに影響がある。この状態はmidlife crisisと呼ばれるらしい。
promoteされるサイズが大きいとheapも大きい。これはGen 1 heap size と Gen 2 heap sizeで見る。Gen 0 heap sizeは次のGen 0 GCが開始される条件となるサイズ(ここまでallocできる)であり溜まっているサイズではない。
Promoted Finalization-Memory from Gen 0 はfinalizationが必要なオブジェクトの量。finalizeするまで再利用できないのでサイズが増加する要因になる。
# Total committed Bytes はGCヒープ上でcommitされたメモリ、 # Total reserved Bytesは同じくreserveされたメモリ。ヒープを広げて次のセグメントを確保すると、reserveされ、実際に使用するときまでcommitはされていない。
# Induced GC は、GCを要求した回数。これが多いのはバグの可能性もある。GCヒープを削減するためにinduceするよりはヒープを増やさないような方策を考えることで解決するべき。
.NETのGCとは別だが、memory カテゴリーのAvailable Bytesで使用可能な物理メモリがわかる。% Committed Bytesは、commit limitとcommited chargeの比率。90%を超えるとcommit エラーが発生するかもしれない。
Process カテゴリーのPrivate Bytes は、プロセスのprivate(共有不可能な)サイズ。大きいprivateサイズには注意が必要。これが増加していくときはメモリリークの可能性がある。
記事の後半はwindbgを使った解析について説明している。