布団が俺を呼んでいる

丘山大一のぶろぐ

PowerShell ディスクサイズの使用状態をログで吐き出したい

自分メモ。
ディスクサイズの使用状態を日時のログで吐き出す。
実際使う時はタスクスケジューラあたりで呼び出す。

Get-PSDrive -Name C | Select-Object @{Name='datetime'; Expression={Get-Date -Format('yyyy/MM/dd')} } , Used, Free | ConvertTo-Csv -NoTypeInformation |Select-Object -Skip 1 |Out-File -FilePath 'Drive_C.txt' -Append

もっと簡単なやり方があったはずだが、「Windows Server 2008R2で動く」という本来あってはならない要件があり、試行錯誤してた結果こんなんを書いていた。


Oracle DBリンク関連の情報を取得

自分メモ。
DBリンクを呼び出す処理を見ることになったのですが、機能が独特でよく分からん。
基本的にデータベース同士を密結合する機能なのであまり使うべきではないかな、という感じもしている。

色々取得


1.DBリンクの取得

SELECT * FROM ALL_DB_LINKS

2.DBリンクのパッケージ確認

SELECT * FROM ALL_OBJECTS@DBリンク名 WHERE OBJECT_TYPE = 'PACKAGE'


3.パッケージの中身を確認

SELECT TEXT FROM all_source@DBリンク名 WHERE NAME = 'パッケージ名' ORDER BY LINE

PowerShell 二行を一行にまとめる

自分メモ。
うまく言えないんですが、
aaa
bbb
ccc
ddd
というテキストを
aaa bbb
ccc ddd
に変換してファイル出力する感じ。


こんなん

$originalFilePath="hogehoge.txt"
$filePath = "fugafuga.txt"
[int]$count=0
Get-Content $originalFilePath | ForEach-Object {
  $count+=1
  If($count % 2 -eq 0){
    Write-Output($_) | Out-File -FilePath $filePath -Append -Encoding utf8
  }else{
    Write-Output($_ + "`t") | Out-File -FilePath $filePath -Append -NoNewline -Encoding utf8
  }
}

WSL でGitbucket環境構築

ちょっとした個人用リモートリポジトリが欲しい時は、Gitbucketを構築しています。
Gitbucketは動かすだけならjavaさえあればよいので、Windowsでもお手軽です。
が、逆にいえばjavaを入れなければなりません。
これが嫌だなー、という人は仮想環境を作るなりDockerで構築するのがよいと思うのですが、今回はWSLでやっていきます。

理由:現在使用中の環境のうち一つで、Dockerサービスが動かなくなったので(泣)

手順

使用環境はストアから入手したUbuntu。

まずはJavaをインストール。
sudo apt install default-jdk

インストール完了後、バージョン表示してインストール確認。
java -version

Gitbucketを入れるためのディレクトリを作成。
sudo mkdir /opt/gitbucket

Gitbucketをダウンロード。
sudo wget https://github.com/gitbucket/gitbucket/releases/download/4.32.0/gitbucket.war -P /opt/gitbucket

さて、後はgitbucketを動かせば完了なのですが、このままではWSL内にファイルを保持してしまいます。
そしてWSLの環境はリセットをすることがありますので、油断するとファイルが失われてしまいます。
これを防ぐため、Windows側でファイルの保存フォルダをあらかじめ作成しておきます。
今回は
D:\WSL\Ubuntu\GitBucket
というフォルダを作成しておきました。

さて、再びWSLに戻り、起動用ファイルを作成します。
叩きやすい場所に作るのがよいと思いますが、今回は/opt/gitbucket 内に作成しました。
sudo vi startgitbucket.sh

startgitbucket.shに、下記の内容を記述します。
java -jar /opt/gitbucket/gitbucket.war --port=8600 --gitbucket.home=/mnt/d/WSL/Ubuntu/GitBucket
ポートも指定していますが、ポートは空いている番号なら何番でもOKです。
今回はなんとなく8600番を指定しました。

最後に、実際に起動して完了。
sh startgitbucket.sh

http://localhost:8600/ にブラウザでアクセスすれば、動いているのが確認できます。



よりよい方法

この方法だと、いちいちファイルをたたいて起動しなくてはならないため、サービスとして登録した方がよいと思います。
が、そのあたりよく分からないしよけいに面倒くさいは今回触れません。あくまで「簡易のちょっとした」環境整備です。


さらによりより方法

素直にgithubなりなんなりでリモートリポジトリを用意した方が楽だよ!


独習Git

新品価格
¥3,542から
(2019/8/25 14:47時点)

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;



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で接続していました。


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


問題は

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



MacBookに親しもう 6

ヘルプを読みつつ、気になる設定をちょこちょこと変えてみます。
自分で何を変えたのか忘れそうなので備忘。

Dock

とりあえずサイズを小さくして画面左側へ。
ついでに、ウィンドウをしまうときのエフェクトをジニーエフェクトからスケールエフェクトに変更。
最後に表示するアプリを整理。


デスクトップ

背景は単色派なので灰色に。
メニューバーは自動的に非表示に(暫定)。
サウンドをメニューバーに表示するように。
Dashboard を操作スペースとして表示(暫定)。→非表示にしました。
ホットコーナーにLaunchpad と アプリケーションウィンドウを設定。ホットコーナー便利そうですね。こういう機能好き。


キーボード

F1、F2などを標準のファンクションキーとして使用するように変更(こっちをデフォルトにしろと言いたい)。
ライブ変換を停止。


ユーザ辞書

文頭を自動的に大文字にする をしないように(こっちをデフォルトにしろと言いたい)。


ショートカット

サービスにフォルダに新規ターミナル、ターミナルタブ追加。


トラックパッド

タップでクリック、クリック弱い、軌跡の速さちょい速く。
アプリケーションExposeを有効(暫定)。
マウスポインタをシェイクして見つけるは……使ってみたら面白かったんですけど、ノートPCでポインタが迷子になることはなさそうなので、ナシで。

この辺まで設定したら、トラックパッドも便利と感じるようになってきた。
タップでクリックは必須感。


Finder

新規でデスクトップを開くように。
サイドバーから最近使った項目、iColoudDrive、AirDrop、書籍、どこでもMy Macを消去。
拡張子は表示するように、警告は出ないように。


他にも変更したものがあるんですが、記録し忘れました。
便利そうなのがあれば備忘として追記していきたいと思います。




Apple MacBook Air (13インチ, 1.6GHzデュアルコアIntel Core i5プロセッサ, 256GB) - スペースグレイ

新品価格
¥169,333から
(2019/1/21 22:16時点)

PackageManagement に挑戦その3

挑戦と書きつつ、自分メモ。
ChocokateyGetで入れたもので、スタートメニューに出てこないものは
C:\ProgramData\chocolatey\lib
のどこかに落ちているので、自力でスタートに登録してやる必要がある。

具体的にはmagicavoxelがそうでした。

PackageManagement に挑戦その2

今度は実際に入れてみる。
使うプロパイダはChocokateyGet。powershellを管理者実行にして作業開始です。


まず一つ

ChocolateyGet を入れてみます。

Install-PackageProvider -Name ChocolateyGet


インストールしようとしているのに、いきなりアンインストールしようとするメッセージが。
このメッセージは単なる間違いのようなので、構わず「Y」。


しかし失敗。
名前が違うんじゃないの?警告が出ていますが、ここではメッセージを無視して
Set-ExecutionPolicy RemoteSigned
で権限変更。再度Install-PackageProvider -Name ChocolateyGet を実行するとあっさり通りました。
※通るんですが、この時点では正しく登録されてなかったぽい。



続いて、7-Zip を探してみます。
Find-Package  -Name *7-Zip* -Provider ChocolateyGet
するとChoco.exeを入れていい?というメッセージが。ここは「Y」です。
で、官僚したら再度Find-Package  -Name *7-Zip* -Provider ChocolateyGet を実行。

……

何も出てきませんね?
ちょっとコマンドを変えてみます。
 Find-Package  -Name *Zip* -Provider ChocolateyGet


ああ、出てきた出てきた。

出てきたのでインストールしてみます。
Install-Package -Name 7zip.install -Provider ChocolateyGet


おお、できた。
ちょっぴり楽しい。


とりあえず入れたもの一覧

7-Zip:Install-Package -Name 7zip.install -Provider ChocolateyGet
IrfanView :Install-Package -Name IrfanView -Provider ChocolateyGet
Media Player Classic: Find-Package -Name "mpc-hc*" -Provider ChocolateyGet | Install-Package
VSCode:Install-Package -Name "visualstudiocode" -Provider ChocolateyGet
Kindle for PC:Install-Package -Name "Kindle" -Provider ChocolateyGet
Blender:Install-Package -Name "blender" -Provider ChocolateyGet

バージョンが古いものがありますが、それは後で更新するということで。


追加で入れたもの

2018/10/31 ImgBrun : Install-Package -Name imgBurn -Provider ChocolateyGet
2018/11/2 CrystalDiskInfo:  Install-Package -Name crystaldiskinfo -Provider ChocolateyGet
2018/11/11 node.js(LTS):  Install-Package -Name nodejs -Provider ChocolateyGet
2018/12/11 magicavoxel:  Install-Package -Name magicavoxel -Provider ChocolateyGet
2018/12/11 magicavoxelviewer:  Install-Package -Name magicavoxelviewer -Provider ChocolateyGet
2018/12/16 Q-Dir:  Install-Package -Name qdir -Provider ChocolateyGet
2018/12/18 imageglass:  Install-Package -Name imageglass -Provider ChocolateyGet
2018/12/19 Screen To Gif:  Install-Package -Name screentogif-Provider ChocolateyGet
2018/12/25 Inkscape:  Install-Package -Name Inkscape -Provider ChocolateyGet
2019/2/18 Notable:  Install-Package -Name notable -Provider ChocolateyGet

デスクトップブリッジでストアに提出

これまた「ぷるまど」開発で経験したことまとめ。
2018年7月時点での、WPFアプリをUWP化し、ストアに提出する時のやり方となります。

条件と目的

元のアプリはWPF(WinFormsでも同じはず)
ストアに提出することを目的にする

やらなければならないこと

アプリをUWP化する
UWPにしたら、設定を変更する
runFullTrustが付与されることに注意する
ストアに提出する際、Centennial Program Addendum を承諾する
リジェクトされる場合、一週間程度かかる

アプリをUWP化する

既存アプリのUWP化といえば、Desktop App Converterが有名です。UWPやWindowsストアに提出するアプリを開発しようと検討すると、まずその名前が目につきます。
ストアから入手できるのと、コマンドラインから実行できるので繰り返し実施したい場合に便利です。
ですが。
ぶっちゃけ、UWP化といっても、ストアに提出する直前に一度実行し、あとはちょちょっと設定を加えるだけです。そう何度も繰り返す作業ではありません。
というわけで、GUIで操作しましょう。
Windows アプリケーション パッケージ プロジェクトを追加してUWP化します。
なんと、このプロジェクトを追加すれば、後はマウスでポチポチしていればUWPになります。
UWP化だけなら、実際の作業は
・既存のプロジェクトに「Windows アプリケーション パッケージ プロジェクト」を追加
・ターゲットバージョン指定
・UWP化するプロジェクトを指定
でほぼ完了です。

UWPにしたら、設定を変更する

といっても、これは通常のUWPの作業とほぼ同一です。
異なるのは「.appxupload」ファイルを明示的に作成すること、「runFullTrust」を与える必要がある、ことくらいでしょうが。
他にも、スタートメニュー表示用の画像ファイルを用意する必要があります。
※.appxuploadはWindows アプリケーション パッケージ プロジェクトフォルダ直下の「AppPackages」フォルダ内に作成されます。

Centennial Program Addendum

UWP化したアプリをストアに提出するときは、この契約を結ぶ必要があります。
で、この契約は必須なのですが、なんとアプリ提出の流れの中では結べません。正確には、契約内容を表示することはできるのですが、承諾できないので「あれ? どうやって承諾するの?」となります。
そして正解はパートナーダッシュボードの画面右上の歯車アイコンの「契約」から。「Centennial プログラム補遺」として別個契約する必要があります。
この契約が承諾されていない場合、MSからメールが飛んできます。

リジェクトされる場合

成功すると、普通3営業日以内にパートナーダッシュボードにその旨が表示されます。
逆に、リジェクトされる場合は3営業日を大きく超えて保留中となる場合があります。
(このリジェクトする方が時間がかかるというのがすごくキツイ)
もし3営業日を超えても、保留中の場合は、アプリや契約を見直して、すぐに再提出できるようにしておきましょう。


こんなものですかね。
基本、情報が少ない+手順が変わるので、正攻法である公式ページを都度参照するのがよいと思います。