2018年6月4日月曜日

Python 入門!

AI関連のお仕事もしたい!&純粋にスキルアップしたい!
という思いからPythonを真面目に学習することに決めました。

なんとなく、一番やさしそうな本だったので
まずはこの本をベースに学習を開始!


エディタにはこの本でも紹介あったVisual Studio Codeなるものを採用。

早速先週から着手し、とりあえずP.80くらいまで進みました。

自分はJavaを中心にJavaScriptやHTMLまわり(cssとか)、SQL(主にOracle)が
業務では多かったので久しぶりのスクリプト系言語に
ただただ軽快感?!を覚えました。

すぐコード書いて動くっていいよね。

いったんはこの本をささっと片付けて、Pythonの旨味?!の多くのライブラリを
使ってなんか作成できたらなーと思います。

自宅でコード書くのは当分Pythonになりやすっ

あとは先日行ってきたAWS Summit2018で見れなかったセッションをみたり、勉強会顔だしたりして、随時アップ予定でございます。

2018年5月29日火曜日

Oracle実行計画、SQLチューニング(1)

この記事の内容
 1.実行計画の見方
 2.チューニングTips

**************************************************
**************************************************
それでは早速いきましょう!
 1.実行計画の見方
です。

実行計画の取得~解析のながれ
①sysdbaユーザでsql*plusログイン
sqlplus conn / as sysdba

②PLAN_TABLE作成
2018/6/4訂正
誤)
@C:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlplan.sql
正)
@C:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlxplan.sql
もしくは、utlcplan.sql?

③クエリ実行
explain plan for
[解析したいクエリ]select * from

④実行計画の取得
@C:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlxplp.sql

⑤実行計画の見方
---------------------------------------------------------------------------------
| Id | Operation                      | Name        |    Rows  | Bytes   |  Cost(%CPU)
---------------------------------------------------------------------------------
|  0 | SELECT STATEMENT               |
|  1 |  SORT GROUP BY                 |
|  2 |   NESTED LOOPS                 |
|  3 |    TABLE ACCESS BY INDEX ROWID | HOGE_IDX11
|  4 |   NESTED LOOPS                 |
|  5 |    TABLE ACCESS BY INDEX ROWID | HOGE_HOGE1
(省略)
---------------------------------------------------------------------------------
基本はCostが極端に上がっている箇所を要チェック!
RANGE SCANなら問題ない(はず)

一番ネスト深い位置からスタートし、同階層に複数ある場合には
Idが若い(上から)順にアクセスされる。(アクセス順序)

この例だと
 3 → 5 → 2 → 4・・・

<ポイント>
 ★1.アクセスパスについて
    FULL SCAN箇所ないか
 ★2.結合順序
    妥当かどうか
 ★3.結合方式
    MERGE JOIN CARTESIAN(直積結合)が発生している場合には、結合方式の変更する必要あり!

****************************************************************************************
次に
 2.チューニングTips
代表的なものを整理しておく。

<ポイント>
 ★1.INNER JOIN句内で絞り込みできないか検討してみる
 ★2.関数は右側に書く
 ★3.暗黙の型変換が起きないようにする。
    ex.XXX=''とか
 ★4.IS NULL だとインデックスが効かないため、DB項目設計時に考慮しておく。
    ex.名称項目 is not nullとかしないくてもいいように制御用のFLGを用意するとか
      名称有無FLG='1'で要件満たせるならOK!
 ★5.LIKEの中間一致、後方一致は使わない
    ex.Function Index検討する。
 ★6.<>ではなく、in句での置き換え可能か検討する

チューニングは実践してもなんぼだと感じます。
とはいっても性能問題で苦労したくないのも事実だけどね・・・

2018年5月16日水曜日

robocopyを使ってみる

robocopy [コピー元] [コピー先] /s /e /log+:[logファイル名]
robocopy .\src .\dst /xf web.config user.config exe.config /s /e /log+:hoge.log
※log追記型

<参考サイト>
Windowsの「robocopy」コマンドでフォルダをバックアップ/同期させる
http://www.atmarkit.co.jp/ait/articles/0704/20/news130.html

【ROBOCOPY】特定のファイル・フォルダをコピー対象から除外するオプション
https://pig-log.com/robocopy-option-exclude/

robocopy - 個人的によく使うオプションメモ
https://golorih.exblog.jp/21438298/

2018年5月12日土曜日

Oracle色々(11grR2,12cR2)

前提:Oracle 11g(Release 11.2.0)、12c(Release 12.1.0、12.2.0)

1.そもそも編

<インスタンスとデータベースの違いとは?>
 メモリ空間の話  →インスタンス
 物理ファイル群の話→データベース
 RAC構成の場合、1つのデータベース・複数のインスタンス、ということになる。
 
 RAC…Real Application Clusters。複数サーバ(インスタンス)で1つのデータベースを共有する仕組み。
      RAC構成はActive/Active構成。(Active/Standbyではない)

 RAC構成メリット
  ①耐障害性の向上
  ②拡張性の向上
   サーバを後から追加可能(スケールアウト)
  ③負荷分散の実現
   性能を安定化、負荷の平準化。

<性能向上するために>
 一般的にもDISKアクセスは遅く、Cacheアクセスの方が速い

 Oracleではデータ参照スピードを上げるために
 テーブルにインデックスを貼る方法が通例。
 
 インデックス対象データはメモリ(SGA データベース・バッファ・キャッシュ)へ展開され
 その結果アクセス効率が上がる。
 (SGAに検索対象が存在すれば、テーブル(Disk)の参照不要)
 
 REDOログバッファ
 →昨今ではあまり問題にならない傾向。
 
 オプティマイザ
 →共有プールにあるライブラリキャッシュを参照して経路を決める。
  ライブラリキャッシュ…アプリケーションコード(コンパイル済)保持。
             SQL解析ツリー、実行計画

<V$表を利用したSGA領域の見積方法>
■V$DB_CACHE_ADVICE
select
SIZE_FOR_ESTIMATE
, SIZE_FACTOR
, ESTD_PHYSICAL_READ_FACTOR
, ESTD_PHYSIVAL_READS
from V$DB_CACHE_ADVICE;

※SIZE_FACTOR(現在値1)を変化させてESTD_PHYSIVAL_READSが減るなら効果あり

■V$SHARED_POOL_ADVICE
select
SHARED_POOL_SIZE_FOR_ESTIMATE
, SHARED_POOL_SIZE_FACTOR
, ESTD_LC_MEMORY_OBJECT_HITS
from V$SHARED_POOL_ADVICE;

<V$表を利用したPGA領域の見積方法>
select
count(n.name) SESSION_COUNT
, sum(s.value/1024/1024) SESSION_MEMORY_MB
from v$sesstat s, v$statname n, v$session se
where n.statistic# = s.statistic#
and s.sid=se.sid
and n.name in ('session pga memory');

SESSION_COUNT×2MB または SESSION_MEMORY_MB(MB)を参考にする

<各メモリとパラメータについて>
Oracle11g以降
MEMORY_TARGETに設定した値の範囲でいい感じにやってくれる。
→明示的に対象パラメータに値を設定することで最低限の値を確保してくれる。

参考サイト
津島博士のパフォーマンス講座
http://www.oracle.com/technetwork/jp/database/articles/tsushima/index.html

Oracleの実行計画を読んでみよう!
https://www.slideshare.net/ryotawatabe/20170907-dbts2017-tokyo-cosol-how-to-read-oracle-execution-plan

2018年4月30日月曜日

TensorFlowについて調べてみた

下記のサイトを教材に学んでみることにしました。
◆TensorFlowとは何か?基礎の基礎をわかりやすく解説!

TensorFlowを始めるにあたり、機械学習や深層学習といった基礎知識は必要となります。
とありましたので、サイトの誘導どおりに読み進めます。

①【簡単入門】機械学習初心者がまず最初にやるべき5つのこと

1.まずは概要をつかむ

【10分でわかる】機械学習とは?どこよりもわかりやすく解説!

<なぜ機械学習が注目されるのか>
機械学習が注目される大きな理由として、「大量のデータから自動的に短時間で正確な結果を得ることができること」が挙げられます。

コンピューター自身の処理速度が上がり大規模なデータも扱えるようになったこと、低価格化が進んで扱いやすくなったことも理由の1つです。

<人工知能と機械学習の違い>
人工知能は、ざっくりいうと「人間の知能と同じ特徴を持つ複雑なマシンを構築すること」といえます。

機械学習は、その人工知能を実現するための方法の1つです。

機械学習とは「データから反復的に学習し、そこに潜むパターン(特徴)を見つけ出すこと」です

<機械学習について>
機械学習には大きく分けて3種類あります。
  • 教師あり学習
  • 教師なし学習
  • 強化学習
の3種類です。

教師あり学習とは、あらかじめデータと特徴を紐付けておき、新しいデータがどこに分類されるかを予測する手法です。

問題(データ)と答え(特徴)を教えるということが、教師のような役割を果たしているので「教師あり学習」と呼ばれているのでしょう。

<教師あり学習>
教師あり学習は一般的に、「過去のデータから将来起こりそうな事象を予測すること」に使われます。

IMG_0083.png
具体的には、「迷惑メールの判別」や「明日の天気や気温の予測」などで用いられています。

<教師なし学習>
教師なし学習とは、与えられたデータから規則性を発見して学ぶ手法です。

教師あり学習の場合は、あらかじめ正解を与えていましたが、教師なし学習はその答えを導き出すことを目的とします。

そのため、教師なし学習は、正解・不正解が存在しないのが最大の特徴です

IMG_0084.png

具体例では、おすすめのメニューや商品を紹介する「レコメンド機能」や電子メールの分類などに使われています。

<強化学習>
強化学習は教師あり学習に似ています。
大きな違いは、教師あり学習では明確な「答え」を与えますが、強化学習では与えないことです。

強化学習では答えの代わりに、「行動」と「報酬」を与えます。

どのような行動をとれば報酬を最大でもらえるかということを学習していきます。
これは、分かりやすい例でいうと囲碁や将棋などのAIで利用されています。

IMG_0085.png

行動を繰り返し、報酬が大きくなった行動に高いスコア、報酬がもらえなかった行動に低いスコアをつけていくことで、その場で最も効率がいい行動がとれるようになるというものです。

2.目的を見極める





3.入門コンテンツで学び始める
4.本で理解を深めていく
5.実際に手を動かしてみる






2018年3月27日火曜日

IISについて(1)

タイトルどおり、業務で少々さわることになったので
なんとなくの知識を少しでも確かなもの?!(にはならないかも)に
するために調べたことを書き残しておきます。

今回、参考にしたのはこれ
Microsoft
インターネットWebサーバー構築ガイドライン【ドラフト版】
https://msdn.microsoft.com/ja-jp/ff625168.aspx

随時アップします。
こんな章立てです。

序章 インターネットと Web サーバー
マイクロソフトの Web サーバー
インターネットのサイトを見るとは実際にはどういうことか
Web サーバーの仕組み
クライアントと Web サーバー間の通信
Web サーバーのインターネットへの公開

第 1 章 IIS をインストールしよう
インストールする環境
本書で使う環境
クライアント OS のインストール方法
サーバー OS のインストール方法
コラム: Server Core のインストール方法

第 2 章 IIS の動作を見てみよう
IIS にアクセスする
インターネット アクセスとファイル共有
ローカルホスト (localhost) へアクセスしてみよう
管理ツールで設定を見てみよう
なぜ IIS マネージャーのデザインを変更したか
IIS を構成するものは何?
インストール後 あるいは サイト作成後に何も作らなかったのに?
設定ファイルを見てみよう (applicationHost.config)
IIS を開始・停止・再起動するには
アクセスされた足跡の確認

第 3 章 ページを公開しよう
IIS での公開方法を知ろう
HTML ファイルを公開してみよう
インデックス ファイルを設定する
ほかの場所にあるファイルを見せるには
コラム: IIS が処理できるデータの種類を追加するには

第 4 章 さまざまなサーバーの設定
IIS ユーザーごとに公開ディレクトリをつくるには
ディレクトリごとの設定ファイルを使用するには
複数のサーバーに見せるには

第 5 章 アクセス制限の仕組みを知ろう
なぜ要求を制限するのか
IP アドレスやドメイン名で要求を制限するには?
認証を設定するには?
ファイル システムを介してアクセスを制限するには?

第 6 章 アプリケーションを実行環境を設定しよう
Web で使用されるアプリケーションとは?
IIS で実行できる Web アプリケーションの種類
ハンドラー マッピングの考え方
IIS での "アプリケーション" とは
アプリケーションの実行環境
SSI を使えるようにするには
コラム: IIS 7 での Web アプリケーションの開発環境

第 7 章 IIS の拡張機能を使おう
IIS 7 の拡張機能の生い立ちは?
拡張機能はどうやって入手するの?
それぞれの拡張機能は何ができるの?
人気のダウンロードって何?

第 8 章 SSL に対応しよう
なぜ SSL のような技術がよく使われるのか
SSL とは?
SSL を利用するための環境要件は?
サーバー証明書を入手するには?
SSL を要求するようにサイトを構成するには?
FTP で SSL を利用するには?

第 9 章 ログやトレースを活用しよう
IIS が出力する様々な情報
アクセス ログ
失敗した要求のトレースとは?
ワーカー プロセスの監視
イベント ログ

第 10 章 動作状態の確認と性能向上
IIS は マイクロソフト製品なのでブラック ボックスなのか?
実行状態を見ることができるのは何故なんだろう?
Appcmd.exe、Windows PowerShell の活用方法
性能向上に利用できるさまざまな機能や情報
内部的な詳細性能を見たい時にはどうするか?
SEO Toolkit って SEO 向け情報収集だけ?
IIS 7 の HTTP 圧縮機能とは?
IIS 7 の出力キャッシュ機能とは?
コラム: 性能向上のための Tips 集

第 11 章 セキュリティ対策を考えよう
Windows Server 2008 セキュリティ ガイドって?
Microsoft Security Compliance Manager って何ができるの?
Web サービスの強化
セキュリティは既定で実装
攻撃対象となる各機能
セキュリティ対策
参考になる補足情報

序章 インターネットと Web サーバー
WindowsXPだとオーバーフローした際、エラーを返したが
IIS7からはキューに溜まるだけでエラーにならない(処理遅延)

第 1 章 IIS をインストールしよう
最低限のものだけで構築するServer Coreインストールについても触れてあります。

第 2 章 IIS の動作を見てみよう
ドメインの意味
 ①サーバ管理者を支援する仕組み
  →いわゆるADとか系
 ②http通信する際の宛先情報
 この①と②で同名なので混乱しやすいとか言う話

インデックスファイル=既存のドキュメントについて
使いどころは分かるような、分からないような

inetmgrで起動

IISのサイトとは(言葉の定義)
→通信ポート、ドメイン名と紐づく単位。
 ポート、IPアドレス、ドメイン名を指定。
 ポート番号を変える=サイトを設定変更

w3wp.exe
→IISのプロセス
 アプリケーションプール

サーバー全体の設定 → applicationHost.config
サイト単位やアプリケーション単位 → web.config

コマンドいろいろ
iisreset /start   サーバー全体の開始
iisreset /stop    サーバー全体の停止
iisreset /restart サーバー全体の再起動
Appcmd.exe(アプリケーションプール、サイトに対するコマンド)

今後のことを考えるとPowerShellに慣れておくといいよ!のコメントあり。

力尽きたので、次回へつづく。。。。

2017年12月6日水曜日

タスクのコツ

いつまでにやるべきか(期限)ではなく、いつまでに着手すべきか!