IT Soldier Sakuri !!

Oracle使い。いつのまにかIT戦士になってしまったさくりの可哀想な奮闘記。

Oracle活用 Excelの標準機能(MicrosoftQuery)でデータを取得する

今日は管理職がいないからのんびり自分の仕事ができるかと思いきや、
超できないおっさんの引き継ぎでイライラ(・`ε・´○)イライラ
ち○こ切り取ってトイレに流してやろうかと思ったわ!!!

そんなところで、滾る怒りを治めつつ、
今日はExcelの標準機能(MicrosoftQuery)でデータを取得してみます。
たぶんこれ使ってる人ってほとんどいないと思うんだけど、意外と便利!

新規でExcelを開き、[外部データの取り込み]→[その他のデータソース]→[Microsoft Query]をクリック。
f:id:itsoldiersakuri:20150827201246p:plain

[<新規データソース>]を選択して、[OK]ボタンをクリック。
f:id:itsoldiersakuri:20150827201357p:plain

1.データソース名は何でもOK
2.インストールされているOracleClientを選択
3.[接続]ボタンをクリック
f:id:itsoldiersakuri:20150827201512p:plain

サービス名、ユーザ名、パスワードを入力して[OK]ボタンをクリック
f:id:itsoldiersakuri:20150827201544p:plain

[データソースの定義にユーザIDとパスワードを保存する]にチェック
※チェックを入れないと毎回ユーザIdとパスワードを入力することになる。
f:id:itsoldiersakuri:20150827201655p:plain

上記でチェックを入れるとこんなワーニングが出るけど、当然[OK]
f:id:itsoldiersakuri:20150827201724p:plain

[OK]ボタンをクリック
f:id:itsoldiersakuri:20150827201738p:plain

先程指定した名称でデータソースが出来上がっているので、[OK]をクリック
※2度目以降はここからスタートになるので簡単!
f:id:itsoldiersakuri:20150827201842p:plain

データ抽出をしたいテーブルを選択して[>]をクリックすると、
右側の欄に列名が表示されるので、[次へ]をクリック。
f:id:itsoldiersakuri:20150827201931p:plain

条件をしていしたければ指定して[次へ]をクリック。
Excelなので、データ抽出後にフィルタした方が楽ちんかも。
f:id:itsoldiersakuri:20150827202019p:plain

ソートを設定したければ指定して[次へ]をクリック。
Excelなので、データ抽出後に(ry
f:id:itsoldiersakuri:20150827202153p:plain

[完了]をクリック
f:id:itsoldiersakuri:20150827202215p:plain

[OK]をクリック
f:id:itsoldiersakuri:20150827202234p:plain

データ抽出ができました!!!
f:id:itsoldiersakuri:20150827202246p:plain

最初からフィルタもついているし、デザインもされているので、見やすい!!
ITリテラシの低いエンドユーザさんでも手順書を作ってあげれば簡単にデータ抽出ができます!
※その場合には、テーブルを直接参照させるのではなくて、Viewにしてあげて、
 Viewしか入っていない、Select権限だけ持たせたユーザを配るのがベストかも!

Excelのシート保護のパスワードを忘れてしまったときの対処

パヤーーーーン!!!!
おめでとう!!
もう、本当におめでとうだよ!!!
超嬉しい₍₍ (ง ˙ω˙)ว ⁾⁾ 踊らずにはいられないっ!

なので、今日はちょっと手抜きながら、ちょっとした技を。

Excelで個人情報とかを管理しなくちゃいけなくて普段は見えないようにしてシート保護かけてる場合で、シート保護のパスワードを忘れちゃったよ!!
ど、どうしよう( ˘•ω•˘ ).。oஇ
という場合の対処方法を!
f:id:itsoldiersakuri:20150826143255p:plain


そんなときはこう!!!
①シート保護がかかっているシートで[Ctrl]+Aで全選択し、[Ctrl]+Cでコピーする。
f:id:itsoldiersakuri:20150826143305p:plain

②シートの保護がかかっていないシートへ移動。
 またはシート追加する。

③シートの保護がかかっていないシート、または追加したシートで[Ctrl]+Vで貼り付け。
 これでデータは復活です!
f:id:itsoldiersakuri:20150826143345p:plain

簡単だけど、いざというときにとっても便利!!
こないだ派遣さんが「パスワード忘れちゃったんです(_ _。)・・・シュン」って
謝りに来てくれたけど、じゃじゃーん♪と復活できました!!
…けど、そう考えるとシート保護のパスワードって一体なんなん…?

【緊急】WindowsUpdate MS15-093/3088903

おっと、一週間近く経ってしまってたけど、
またMicrosoftから緊急のWindowsのパッチが出てました。
詳細はマイクロソフト セキュリティ情報 MS15-093 - 緊急を参照。

今回はInternetExplore関連。
IE7~IE11までが対象です。
Windows 10に搭載されているIE 11も対象なことにびっくり。
しかも既に悪用も確認済みらしいので、最高レベルで緊急パッチです。

■対象のパッチ
① KB3078071
② KB3087985
①のパッチがあたった後、②が当たりまました。
そのため、①インストール→再起動→②インストール→再起動。
超めんどくさい。

インストールの確認はこちら↓↓↓
f:id:itsoldiersakuri:20150825092313p:plain


丸一日、動作検証したけど、特に変な動きはなし。

Rubyでソートを考える④シェルソート

体調がいまいちなのは昨日の遊び疲れかな。
いや、突然1日6時間も引き継ぎミーティング入れられたからかもしれない。
ハードすぎるよ、先週までの穏やかな毎日を返して!!!

今日はシェルソート!!!

シェルソートとは(処理方法)
適当な間隔を決め、この間隔だけ離れた要素同士だけで挿入ソート。
その後、間隔を少し狭めて、やはりその間隔だけ離れた要素同士だけで挿入ソート。
これを繰り返していくと、最終的には間隔 = 1となり、この時点で結構「整列済み」な状態になってるはず。

間隔 = 1で挿入ソートを行うことは、普通に挿入ソートを行うということ。
ただし、挿入ソートは整列済みになっている部分が多いほど処理速度が向上する特性があるので、最後の挿入ソートはかなり高速に終わるはず!

これ面白い。ちゃんとシェルソートになってる!!
Shell-sort with Hungarian (Székely) folk dance - YouTube

# coding: windows-31j
#------------------------------
#シェルソートをしてみる
#2015/08/24
#------------------------------

puts "英単語をabc順に並び替えるよ!!"
puts "英単語を何個でも入力してください。"
puts "最後はEnterだけの空行にしてください"

#配列
words = []

while word = gets.chomp
    break if word.empty?
    words << word
end

repeat = words.length

gap = repeat / 2
while gap > 0
    0.upto(gap - 1) do |num1|
        num2 = num1 + gap
        while num2 < repeat
            num3 = num2 - gap
            while num3 >= num1
                if words[num3] > words[num3 + gap]
                    words[num3], words[num3 + gap] = words[num3 + gap], words[num3]
                else
                    break
                end
                num3 = num3 - gap
            end
            num2 = num2 + gap
        end
    end
    gap = gap / 2
end

puts "並び替えが完了しました!"
puts words

Rubyでソートを考える③選択ソート

今日はお母さんとディズニー・オン・アイスを観に行ってきました!
お母さんが遊んで遊んでとうるさいんだけど、
こんな暑いときに外を歩いたら倒れちゃうよ!と思ってたら、
会社で安くチケット販売していたので、涼しそうでちょうどいいかと思って。

思いの外、子供向けだったらしく2~6歳くらいの子供連れが多くて、
しかも大半の子がエルサの衣装を着てる!!可愛い♪
ショー自体はまぁまぁ。スケートじゃなくてもいいんじゃない?と思いつつ、
涼しいし、迫力もあって、テンポも良くて面白かった(๑•̀ㅂ•́)و✧
そのあと中華街の萬珍楼でごはんを食べて、元町をぶらぶらしてきました。
ミハマで靴を買ってもらっちゃった!
ちょっと背伸びな感じ(๑˃̵ᴗ˂̵)و



まだまだソートの勉強は続いてるよ!

今日は「選択ソート」でいこう!

選択ソートとは(処理方法)
要素の中から、最小値(または最大値)を探して配列の最初の要素と入れ替えるソート方法。
まず最小値を探して、1番目と交換。
次に2番目以降から最小値を探して、2番目と交換。
これを繰り返すことで、ソートが完成。

バブルソートに似てるなぁって思ってたら、バブルソートの改良版らしい。
ということは選択ソートの方がちょっと処理速度は高いはず。

では、選択ソートを書いてみよう。

# coding: windows-31j
#------------------------------
#挿入ソートをしてみる
#2015/08/22
#------------------------------

puts "英単語をabc順に並び替えるよ!!"
puts "英単語を何個でも入力してください。"
puts "最後はEnterだけの空行にしてください"

#配列
words = []

while word = gets.chomp
    break if word.empty?
    words << word
end

repeat = words.length

0.upto(repeat - 2) do |num1|
    min, s = words[num1], num1
    (num1 + 1).upto(repeat - 1) do |num2|
        if words[num2] < min
          min, s = words[num2], num2
        end
    end
    words[num1], words[s] = words[s], words[num1]
end

puts "並び替えが完了しました!"
puts words

だいぶソートに詳しくなってきた感じ?
でもそろそろ基本的なソートはもうやっちゃったから、難しいソートになりそう。
難しいのは…できない、かも…。

Rubyでソートを考える②挿入ソート

今日はまたすっごい暑い…
そんな中、午後からまつげエクステして、お買い物に行ってきた!
前に見て可愛いなって思ってたワンピースをやっぱり購入。
ウッキウキしながら、ベローチェでカフェプログラミングなう□_ヾ(・_・ )カタカタ

Rubyでソートを考える①バブルソート - IT Soldier Sakuri !!に引き続き、
ソートの勉強をしておるのです。

今日は「挿入ソート」でいこう!

挿入ソートとは(処理方法)
ソート(整列)済みの部分に対して次の要素を適切な位置に挿入するソート方法。
1番目と2番目の要素を比較し、順番が逆であれば入れ換える。
これで2番目までは整列していることになる。
2回目は、3番目の要素が2番目までの要素より小さい場合、正しい順に並ぶように挿入する。
これで3番目までは整列していることになる。
これを繰り返すことで、ソートが完成。

挿入ソートは整列されている部分が多いほど計算量が減るから処理速度が上がるみたい。
逆に、整列されているものを逆順(昇順→降順にする等)ときは全部並び替えるから遅くなる。

では、挿入ソートを書いてみよう。

# coding: windows-31j
#------------------------------
#挿入ソートをしてみる
#2015/08/22
#------------------------------

puts "英単語をabc順に並び替えるよ!!"
puts "英単語を何個でも入力してください。"
puts "最後はEnterだけの空行にしてください"

#配列
words = []

while word = gets.chomp
    break if word.empty?
    words << word
end

repeat = words.length

1.upto(repeat-1) do |num1|
    (num1-1).downto(0) do |num2|
        if words[num2] > words[num2+1]
            words[num2],words[num2+1] = words[num2+1],words[num2]
        else
            break
        end
    end
end

puts "並び替えが完了しました!"
puts words

色々なソートプログラムを作成したら、速度比較とかやってみたら面白いかな?

Rubyでソートを考える①バブルソート

今日異動の内示が出た。
異動といっても部内異動でアプリ→インフラで、
そもそも私はずっとインフラで、去年アプリのリリースが間に合わないって
アプリのお手伝いに来ていただけだから、いつかは戻るかなって思ってたけど。
アプリチームの課長が好きなのと、仕事しないでまったりしていられるから
今のチーム好きなんだけどな(´・ω・`)
ま、インフラチームの方が仕事は面白いんだけどね♪


さて、Rubyで何を書こうかなって思ってたんだけど、
ふとアルゴリズムの本が目に入って、ソートにたくさん種類があることを知りました。
私はOracle使いなので、データを取得するときにORDER BYしちゃうので、
ソートとか正直あんまり気にしたことがなかった。


Rubyでももちろんソートコマンドはある。


これで簡単にソートができる。

# coding: windows-31j
#------------------------------
#ソートコマンドを使ってみる
#2015/08/21
#------------------------------
words = []

puts "英単語をabc順に並び替えるよ!!"
puts "英単語を何個でも入力してください。"
puts "最後はEnterだけの空行にしてください"

while word = gets.chomp
    break if word.empty?
    words << word
end

puts "並び替えが完了しました!"
puts words.sort


じゃソートコマンドを使わずにソートさせたい!!
まず手始めにバブルソートなるものを。
処理は遅めだけど、理解しやすいソート。
バカソートなんて言われちゃったりもする。

バブルソートとは(処理方法)
隣り合う2つのデータを比較し、前の要素の方が大きければ交換。
データ列の後方から前方へ向かって全てのデータについて実施していくと、最も小さいデータが先頭に来る。
2回目のソートでは、ソート対象は2番目以降のデータに。
このソートで、2番目のデータの位置が確定。
これを繰り返すことで、ソートが完成。

繰り返しが多いので、処理が遅くなるということみたい。

では早速バブルソートを書いてみる。

# coding: windows-31j
#------------------------------
#バブルソートをしてみる
#2015/08/21
#------------------------------

puts "英単語をabc順に並び替えるよ!!"
puts "英単語を何個でも入力してください。"
puts "最後はEnterだけの空行にしてください"

words = []

while word = gets.chomp
    break if word.empty?
    words << word
end

repeat = words.length

while repeat != 0
    num1 = words.length - 1
    num2 = num1 - 1

    while num1 != 0
        if words[num2] > words[num1]
            words[num2], words[num1] = words[num1], words[num2]
        end
        num1 = num1 - 1
        num2 = num2 - 1
    end
repeat = repeat - 1
end

puts "並び替えが完了しました!"
puts words

プログラム勉強がてら、他のソートもちょっと勉強してみようっと。