布団が俺を呼んでいる

丘山大一のぶろぐ

Oracle データベースをOracle SQL Developerでアクセス

この本の中ではSQL Plus を使って操作しているのですが

面倒になってきた打ち間違いや再入力したいときに不便なので、やっぱりGUI環境が欲しい。


Oracle SQL Developer

Oracle公式でこういうのがあった。

zipが450MB弱、解凍すると630MB程度。このくらいなら気軽に落とせますね。
いわゆるインストーラーつきのものではなく、ポン置きで
sqldeveloper.exe
をたたけば実行できるタイプ。
というわけで早速使ってみる。

はい、エラー



とりあえず適当にやっても使えるやろ……からのいつもの失敗パターン。
んで、Oracle SQL Developerの使い方を軽く探しても、ユーザ名とパスワードを入れて……くらいしか出てこない。

というわけで、素直にエラーを見る+ちょろっと調べた。
エラーにもある通りリスナー周りが違うと。
詳しい動作はよく分からないが、コマンドをたたいてもうちょっと調べてみる。
使うコマンドは
LSTRCTL
からの
ERVICES


リスナーは起動しており、ポートも会っているが、SIDが違う模様。
ので、SIDを「orcl」に変更したら通った。


SQLを発行したいときは[ツール]-[SQLワークシート]から実行できた。
Sql Plus だと打ち間違えが面倒なので、慣れないうちはやはりこっちの方が楽そう。

※この手順は上記の本の通りに構築した場合の対応方法なので、タブン本番環境では役に立たない。
(というより本番環境ではこういうツールはあんまり入れない)。

Oracle データベース操作基礎の基礎

SQLPlus の使い方基本メモともいう。
データベースに接続して基本的なSQLを投げるまで。


SQLPlusの実行方法

  • スタートメニューに登録されているOracle-hogehoge - SQL Plusから。
  • パスがきちんと通っていれば、適当なコンソールからsqlplus
  • %ORACLE_HOME%\product\12.2.0\dbhome_1\bin\sqlplus.exe

マニュアルの場所(12c)

https://docs.oracle.com/cd/E82638_01/sqpug/index.html

基本的なSQLを実行して試す

・sqlplusの実行

コマンドプロンプトから
sqlplus /nolog

・systemユーザで接続(Windowsアカウントを利用してインストール)

connect system /<パスワード>

以後の作業は、「sqlplusの実行」と「SQL文の発行」が混ざる。
SQL文の発行では末尾に「;」が必要。

・ユーザの作成

create user <ユーザ名> identified by <パスワード>;
grant create session to <ユーザ名>;
grant resource to <ユーザ名>;
grant unlimited tablespace to <ユーザ名>;

・作成したユーザで接続しなおす

connect <ユーザ名> /<パスワード>

・テーブルを作成

create table hogehoge (id number(4), name varchar2(32), accessdate timestamp);

・作成したテーブルの定義確認

describe hogehoge;

・行挿入

insert into hogehoge (id, name, accessdate),values(1, 'fugafufa', to_date('2019-07-31'));
insert into hogehoge (id, name, accessdate),values(2, 'fugafufa2', to_date('2019-07-30'));
commit;

・参照

select * from hogehoge;



Oracle データベース挑戦と敗北のメモ

Microsoftの整備された道を歩んできた者にはOracle のハードルが高く感じる模様。
ただ「接続して、テーブルを作る」までに(他のこともやっていたとはいえ)数日を要しました。

そして失敗につぐ失敗のはて、結局素直に本を買う。

Oracleの基本 ~データベース入門から設計/運用の初歩まで

新品価格
¥2,851から
(2019/7/31 19:33時点)



まず成功した手順と注意点について

https://www.oracle.com/technetwork/jp/indexes/downloads/index.html#database
でファイルをダウンロードできるのですが、まずここでアカウント登録が必須。このアカウント登録、住所や電話番号まで登録しなければいけないので注意。捨てアドでとる、なんてことはしないほうがよさそう。少なくとも私は正確なものを入力しました。
んで次。
Database 12c Enterprise/Standard Editions のWindows用で容量約2.8GB。zipを解凍するので、だいたいこの2倍の容量が最初にいる。
これに加え、インストールには8GB強必要です。
Zipは解凍後に削除するにしても、余裕をもってだいたい15GBくらいは見ておきたい。

後は本に従ってインストールするだけなのですが、インストールには結構時間がかかる。しかもファイアウォールの許可ダイアログが途中で二回来るので、画面を見ておく必要があるという面倒くささ。
GUIでインストールするならこればかりは見ててね、という話ですけどちと面倒。


ハードルの高さについて


苦戦したことについて。

ググラビリティの中途半端な高さ

「Oracleを使う」という文脈だと、だいたいデータベースを指すことが多いと思うのですが、「Oracle」単体だと企業名になるため、Javaなんかの製品が混ざってくる。
検索にはOracle Database を使えばいいのですが、それだと記事に「Database」を含まないものが入ってこない恐れがあるので使い分けが必要……な気がする。

最新バージョンに関する情報が少ない

現時点の最新バージョンは19c。
さすがに最新バージョンの情報が少ないのは仕方ないとして、その前バージョンの18cも少なめ。
正確には、「新しい機能」の説明はチラホラはあるのですが、「基本的なSQLは分かるがoracleは初めて」というような「Oracle初学者」向けの情報が見つからず。
「特別な理由がない限り、まずは最新のものを使う」のが基本だと思っているので、最初は何も考えずに19cを入れてしまったのですが、入れ方や入れた後の手順が分からずこれで失敗。
最終的に、「いきなり新機能は使いこなせるわけないのだから、まずは情報が多い12から触ろう」という決断をくだすまでに時間がかかってしまった。

19cは容量がでかい

上でも書きましたけど、最初に
  • まずは最新ものもを入れてみよう!19cだ!
  • 不慣れなんだからGUI環境欲しいな!Oracle Enterprise Managerとやらを入れてみよう!
などとやっていたら25GB超えの容量が必要となってきて、古いマシンには容量不足で入らないという事態に。
「練習目的だから、データベースもそんな作らないし容量なんて大して食わないやろ」とか思っていたら大失敗。
そのあとで余裕があるマシンでやり直してやっぱり失敗するのを繰り返した。

Docker でやってみようぜ

Docker Hub にOracleLinuxというものが公開されているのですが、いかんせん「何が入っているどういうイメージなのか」の情報がサックリと手に入らず撤退。
ただし、これは私のLinux、Docker経験の少なさに起因している問題ので慣れている人ならいけるのではないかと予想。
慣れたらこっちにも挑戦したいね。


アンインストール失敗

19cをアンインストールしようとしたところ、専用のアンインストーラーexeがなく、バッチファイルをたたくという手順でした。
で、このバッチファイル、3つの落とし穴があります。
  • 管理者権限で実行する必要がある
  • 全部のファイルが消えるわけではない
  • 対話式アンインストーラーだが、意味が分からない
はじめの2つはそりゃそうだよね・仕方ないよね、という感じ。
インストールに管理者権限がいるんだからアンインストールにも管理者権限は必要だよね、くらい。
問題は3つ目で、対話式で聞かれる用語の意味がOracle初学者には意味が分からない。基本的にはデフォルト値でいけるのですが、ところどころデフォルト値が無いものがあり何かを入れる必要があるのですが何を入れればよいのやら。
調べながら入力しましたが、本当に正しい手順だったのか確信が持てず。
きちんと勉強していけば分かるのでしょうが、インストールのトライアンドエラーすら難しいというのはなかなか辛い。


今後の展望

12cで基本を学べたら、19cやOracleLinuxにも挑戦したいところ。
何か月かかるか分かりませんが頑張りたい。

nodejs勉強した頃の開発環境(備忘)

あまりにもWeb系世界が不得手だったので、コッソリとnodejsを勉強していた時がありました。
この本↓

Node.js超入門[第2版]

新品価格
¥3,240から
(2019/7/27 18:01時点)


言語仕様の説明は薄めで、実際にアプリを作りながら勉強していくタイプの本です。
動くものができあがるので結構楽しい良本。
が、色々勉強にはなったのですが、nodejsはあんまり肌にあってない感じある。
でもせっかくなので記録は残しておく。

というような自分メモ記事です。


開発環境について

VSCodeでガリガリ書くのはいいとして、nodejs自体はPC本体に入れたくない(バージョン管理から解放されたい)。
学習で使うmysqlもPC本体に入れたくない(DBは仕事で苦労した記憶が多いので本体に入れたくない)。
というわけで、これまた不得手であったdockerに手を出したのです。

そしてできた基本形がこちら。


docker-compose にnodeとmysqlを入れています。
ソースはnodeフォルダの中。
で、使う時になったらコンテナにdocker execしてnpm start OR  Sequal Proで接続。


docker-compose

当時、あちらこちらを参考にして書いた記憶。

version: '3'
services:
# DBサーバ
db:
container_name: nodeDb
build: .
image: mysql:5.7
ports:
- "3306:3306"
volumes:
- ./db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: test
MYSQL_PASSWORD: test
# Appサーバ
node:
container_name: nodeApp
build: .
image: node
ports:
- "80:3000"
volumes:
- ./node:/usr/app
command: "/bin/bash"
tty: true

アプリケーションサーバの方はポートのバインドしつつ、ソースコードを共有するためにvolumesでフォルダをバインド。
先に書いたように、実際に使う時はこのサーバに潜り込んでディレクトリを移動してからnpm startする感じです。

DBサーバは(当然のことながら)データを保存しておきたいので、volumesでフォルダをバインドしています。
また、やっていたらmysqlの最新版ではうまく動かなかったので5.7を利用した記憶があります。
DBコンテナに直接入ることはあまりなく、実際にはSequal Proで接続していました。


初めのうちはなんかうまくいかず苦戦した記憶。


問題は

他にもなにか作業していた気がす���のですが、いかんせん大分前のことなので忘れました(汗)。
この通りにやっても動かなかった!
となっても責めないでください。



Azure Blob Storage 静的Webサイトのホスティング

https://docs.microsoft.com/ja-jp/azure/storage/blobs/storage-blob-static-website
お手軽にできるらしかったので試してみた。

Azureポータルサイトでの作業

といっても特別な作業は一か所だけです。
V2 Storageを作成したのち、「静的なWebサイト」を「有効」にし、二つのドキュメント名を指定します。
指定したら保存。



Azure Storage Exploerでの作業

インストール作業こそありますけど、こっちもメッチャ簡単ですね。
Blob Containersの下に「$web」があるので、そこに先に指定したインデックスドキュメント・エラードキュメント、他を放り込むだけです。超お手軽。
アップロードが終わったらAzureの「静的なWebサイト」からエンドポイントを取得してアクセスするだけです。



そんなこんなで今回作った静的webサイト

練習がてら作ったunityゲーを放り込んでいます。
本当はレミングスちっくなものを作ろうとしていた……んですが、スーパーマリオメーカー2の動画を見ながら作っていたら、気が付いたらコインを配置していました。
でがらし会でプレイしてもらったら
「矢が理不尽すぎる」「矢がクソ」「矢が」
と評判でした。
アイテム全取得もできない(はず)のステージ構成だったりするし、しゃーないね。
たぶんバグもある。

今回作ったサイトは、倉庫として利用予定ですので、ブログ右のリンクに追加しておきます。
今後何か作ったらここに置く予定。(作る予定は立っていない)

PackageManagement に挑戦その3

前回から大分間があいた。


更新について

apt update && apt upgrade 的な、プロバイダ経由で入れたパッケージの更新ってどうやるんでしょう?
Update-Package のようなコマンドがあるかと思いきや、見つからなかったのでゴリ押しました。


Get-Package -ProviderName ChocolateyGet
で取得した名前をもとにインストールかけてみました。うーん、これはやり方間違っている感。
あと、これだとインストールの度に「Y」を入力しなければならないです。
諸々、正しいやり方をだれか教えてください。探してもよく分からなかったんです……


それでな?

今更気が付いたんですが……


なぜKBがChoco経由でインストールされている……??

入れた覚えサパリないんですが。
https://chocolatey.org/packages/KB2919442
https://chocolatey.org/packages/KB2919355
たしかに公開されてはいるんですけど、なぜ入っている??


う~ん。分かりませぬ。
PackageManagement は導入部分の記事は多いんですけど、運用している人の記事をあまり見ないんですよね……
運用しなくなってしまったか、秘蔵のタレがあるのか、簡単すぎて記事にしないの3ケース。
……最後のケースのような気がするな……しくしく。

やっぱPowerShell も本を買って調べなおさないとダメですね……むむ。
↓の本はまだ買えていない((+_+))




PowerShell実践ガイドブック ~クロスプラットフォーム対応の次世代シェルを徹底解説~

新品価格
¥3,974から
(2019/3/14 11:30時点)

WLinux 環境再整備

気が付かないうちにちょこちょこ変わっていたらしい。
最近は実機のubuntuとmac - docker 環境を構築したのでwslを触っていなかったのが気が付かなかった原因ですね間違いない
(必死の言い訳)


知らない間に増えていた機能

wlinux-setup ツール」というものが増えていたみたいです。使ってみたいので環境をリセット(Windows の設定→アプリ→アプリと機能 からリセット可能)。

あとX410にDPIスケーリング機能が増えてた。前は無かったよね……?あったっけ?


さっそく



わお。
めっちゃ色々出てきたやん。
DOCKER はWIndows 上でのdockerへのアクセス用ぽいので、WLinux上でdockerを動かせるわけではないようですね。
必要なものしか選択していないので、全部の挙動は分かりませんが非常に楽。
ただ、以前はあった(が、動作しなかった)Chromeのインストールスクリプトはなくなった?ようです。


ダウンロードしたファイルのアレについて


昔調べたんですけど、記事にしていなかったので記事にしました。


アレ

コレ。

大体何も考えずに「許可する」を選択して閉じるヤツです(セキュリティ意識の欠如という大問題)。


正体について

ファイルシステムであるNTFSにおける代替ストリームです。
といってもなんのこっちゃですね。
ざっくり言ってしまえば、実態となるファイルに追加で情報を入れられます。上の画像は「セキュリティ情報を付加されたファイル」ということになります。
ファイルのプロパティからでは機能の具体的な名称が分からないので調べづらいですが、「NTFS」「代替ストリーム」あたりをキーワードにweb検索すれば色々ヒットします。


詳細を見る

コマンド
dir /r
で簡単に見られます。


二行目のコロン「:」の後にくっついているのがソレです。
ここでは「Zone.Identifier」がくっついている、ということが分かります。が、DATAの中身が分かりませんので、今度はpowershell を使って中身を見ます。


こうすると色々見えてきます。
[ZoneTransfer]の
ZoneIdに3がセット
HostUrl にはダウンロード元のアドレスがセット
されていることが分かります。
ZoneId は列挙体であり、コチラhttps://docs.microsoft.com/ja-jp/dotnet/api/system.security.securityzone?view=netframework-4.7.2に詳細が書かれています。


Windowsファイルシステムなので

代替ストリームはxcopyによるコピーや、エクスプローラ上でのコピーによっても引き継がれます。
WSLでコピー(cp)した場合は引き継がれません。
どのファイルシステムが管理しているか、どのようにファイルが作成されたかによって代替ストリームが残るかどうかが決まってしまうので、重要な情報は基本的におけません。ちょっとした追加情報を残すことにとどめることになると思います。


追加できるデータについて

実は好き勝手に追加できます。


遊んでみようと思えば遊べるかと。
日本語も入れられます。一文字ごとに3バイト増えるようなので、内部的にはunicode? なのかな。


オマケ:AD環境について

最新のADは分かりませんが、以前確認したところ「ゾーン情報を削除する方法を非表示にする」というグループポリシーがありました。
AD配下のマシンでゾーン情報が出てこない場合はこれが有効になっているのかもしれません。


ポストイット 付箋 強粘着 ノート 50x50mm 90枚x5個 蛍光 650-5SSAN

新品価格
¥677から
(2019/2/21 14:49時点)

ゲームパッド大暴走

幽霊の正体みたりゲームパッド(字余り)

カーソルの暴走

以前トゥートもしていたのですが、スタートメニューをはじめとする設定・電卓・メール等あらゆるUWP実装のアプリケーションのカーソルが暴走していました。
具体的にはカーソルキーの「↑」を押し続けた状態になっている感じでした。
スタートメニューでアプリを選択しようとしてスクロールしても勝手に上に戻される。
原因を探ろうと設定アプリを開いても勝手にスルクロールするので設定変更もままならない。
気分転換にマイクラ(Win10 Edition)やろうとしても視点移動し続けるので操作不能。
下記は再現がとれた分かりやすい例(電卓・ニュース)。


この現象は自作のメインPCとSurfacePro 3 で発生していました。
ただし、SurfacePro 3は突然直り、そのあとメインPCの方で発生、という流れでした。

でいきなり直ったりしたので、どうにも原因が分からなかったのですが、先日トリガーぽいのが判明しました。


問題発生条件

環境はWindows 10。おそらくハードウェア的な構成はさほど関係ない(複数のマシンで発生したので)。
現象が発生するのは、おそらくWindows Updateの次回以後起動時。
で、問題を起こしている直接の原因はゲームパッドJC-U4113SBKのようです。

このゲームパッドの「電源が切れている状態」で「コントローラUSB受信機がPCに刺さりっぱなし」で「Windows Update後の次回以後起動時」に問題が発生しました。


解決策

USBを引っこ抜けば解決しますが、再接続で再発します。
ではどうすればよいのかというと、ゲームパッドの電源を入れれば解決します(笑)
一度だけ電源を入れれば、切ってもOKです。
解決策自体は簡単……


解決に時間がかかった理由

解決までに時間がかかったのは、ゲームパッド購入後に試しで使って問題が「無かった」ため、調査対象から外してしまったことにあります。
また、買ったはいいもののゲームをしなかった(意味なーい)ため、電源を入れませんでした。でも使うつもりはあったのでUSBは差しっぱなしでした。
さらに最近は、Windows Updateは先にSurfaceに当てて試してからメインPCにも適用、という流れにしていました。そのため、
  • Surface で問題発生→
  • Windows Updateをメインマシンに当てるのを一時停止→
  • USB端子を使う必要が出てきたのでSurface からコントローラのUSBを引っこ抜く→
  • なぜか問題解決→
  • 小さいUSBを無くすのもイヤなのでメインPCにコントローラのUSB接続→
  • 問題なし→
  • Windows Update適用→
  • 問題発生→
  • Windows Updateに問題があるのか!?と勘違い→
  • ゲームをしないで調査に勤しむ→
  • 実はゲームをしないと解決しない問題
という流れです。気が付けば簡単な問題なんですが……
真面目にゲームをやっていれば自然と解決していたんです。ちくせう。ゲームせずに勉強なんかするからこうなるんだ。


推測

xinput方式のコントローラだとスタートメニューもコントローラで操作できるので(この時知ったんですが)、多分そのあたりが暴発しているんじゃないかなあと思っています。
高速スタートアップあたりも影響しているかもしれませんが、未検証です。



分かれば大した問題ではありませんでした。
なんにせよゲームパッド買ってゲームしない方に問題がある気がする。


エレコム ワイヤレス ゲームパッド 13ボタン Xinput 振動 連射 高耐久 ブラック JC-U4113SBK

新品価格
¥2,649から
(2019/2/14 20:44時点)

Sruface Pro3 のタッチパッド(トラックパッド)の設定を見直す

Mac Bookに感化された模様。


まずはSylphyHorn導入

Mac Book を使っていて便利だなーと思ったのが、画面をフルスクリーンにした際のワークスペースの移動です。
私は画面サイズを大きくして作業することが多いので、この機能は非常に便利でした。
(フルスクリーン+ワークスペースは別に問題点があるのですが、それは今回の主題ではないので割愛)
で、Windows 、というか手持ちのSurface Pro 3でもコレをやりたいわけですが、Windows にはワークスペースがなく、また最大化で自動的に仮想デスクトップ作成とはいきません。
デフォルトの手順だと、タスクビューを呼び出して、アプリを移動させて、最大化……とあっちこっちカーソルを移動させなくてはならないわけです。こりゃ面倒。
で、探したらいいのがあるじゃないですか。


ぐらばく先生のアプリだ、勝ったな。

というわけで、コレを入れると、キーボード操作だけでアプリを別の仮想デスクトップに飛ばせるわけです。超便利。
しかしこれ単体ではキーボードが必須なのであった。


タッチパッド設定見直し

というわけでWindowsの設定アプリを開いて、タッチパッド設定を見直しましょう。



私は3本指ジェスチャを変更することにしました。
が、デフォルトで用意されているものに、アプリの仮想デスクトップ間の移動というものはありません。
ですので、右上のジェスチャの詳細な構成から、SylphyHornのキーボードショートカットを呼び出すことにします。




この設定は、
・三本指タップでアプリを隣の仮想デスクトップに移動
・三本指スワイプで別の仮想デスクトップを作成して、そこにアプリを移動
となっております。

※キーボードショートカット入力中にSylphyHornが反応してしまうので、一時的にSylphyHornを無効化しておくと入力しやすいと思います。

これでタッチパッドだけでアプリと仮想デスクトップを移動させられるようになりました。
らくちん。


残る課題

これをやると仮想デスクトップがガンガン増えてしまうので、ジェスチャの片方を仮想デスクトップの削除に割り当てた方が便利かもしれません。ちょっと検討中。