PostgreSQL:お仕事の関係でAzure Database for PostgreSQLを立てたので、そのメモ

 仕事のほうではずっと社内のWindows版PostgreSQLしか使ってこなかった自分ですが、ここ最近になって、DBをクラウドのフルマネージド環境に移行させる流れがあがってきまして。その流れでAzure上に1つ作成したのですが、折角なので、メモを残しておきます。そんなに大して難しくないですけど。

 尚、Azureのアカウント作ったりとかそういうところはバッサリとカットです。

◆AzureにPostgreSQLのDBを作成する

 まず、ポータル画面にアクセスしたら、左のメニューの「すべてのサービス」を開きます。
 Azureにはいっぱいサービスがありますが、「データベース」カテゴリの中に「AzureDatabase for PostgreSQL」があります。名前の右側にある「★」のマークをクリックすれば、左メニューのお気に入り欄に表示されるようになるので、押しておきましょう。

image

 

 メニューをクリックしたら、PostgreSQLの作成したインスタンス一覧が表示されます。最初は何もないですけど、スクリーンショット取ったのが作成後なので既に出来ちゃってますが、気にしないでください。
 新しく作成するためには、左上にある「追加」をクリックします。

image

 

 新規作成にあたって入力する内容はそんなに多くないです。

image

 サーバー名:任意のもの
 サブスクリプション:契約してるやつを
 リソースグループ:とりあえずテキトーなリソースグループを作成しました
 サーバー管理者ログイン名:任意のもの(ここでは定番の「postgres」に)
 パスワード:任意のもの(パスワード文字列にはルールあり)
 場所:任意の場所
 バージョン:11月2日現在で選べたのは 9.5、9.6、10 の3つ

 そして最後の「価格レベル」の欄です。
 サーバーに割り当てるスペックに応じて金額が変わります。高スペックであれば当然、高価格になりますし、低スペックならばそれなりに安くなります。

image

 ほぼほぼ最低状態にして、毎月のコスト見積もりがおおよそ4400円。これ、実際には使用した分に応じての課金っぽいので、あくまでも見積もり価格だということに気を付けましょう。

 構成を選んだら画面下のOKボタンを押すと、一つ前の画面に戻ります。内容に間違いがなければ、これまた画面下の「作成」ボタンを押します。それからしばらく(1分程度?)待つと、通知欄に作成完了の旨が表示されます。

 

◆接続してみる

 作成が完了したら、Azure Database for PostgreSQLの一覧に表示が出てきていますので、サーバー名をクリックします。すると、そのサーバーの「概要」ページが表示され、詳細が確認できます。

image

 設定の「接続のセキュリティ」をクリックします。

image

 

 テスト用なので、「SSL接続」を無効に。ファイアウォール規則のところに、自PCのIPアドレスを打ち込んで接続許可の状態にします。(入力後、画面上の「保存」を押すのを忘れずに)

 

 ここまで設定しておけば、とりあえず、ローカルクライアントから接続可能になっているはずです。pgAdminなりA5SQLなりのクライアントを起動して、接続テストをしてみます。今回、この記事書いてる段階で自PCのpgAdminがご機嫌ナナメだったので、A5SQLで確認してみます。

 

サーバー名:先ほどの概要ページに表示されているので、それを
データベース名:postgres
ユーザー名:作成時に指定したもの(後ろに「@サーバー名」をつける必要があるので注意)
パスワード:作成時に指定したもの
ポート番号:既定の5432

image

 内容に誤りが無ければ、テスト接続できるはず。

 

 接続できたあとは、普通にPostgreSQLです。

 

◆少しだけ見てみる

 さてさて、これでPostgreSQLのインスタンスが立ち上がったわけですが、現在どんな状態なんでしょうか。少しのぞいてみます。まずはさくっと、バージョン確認。

image

 作成時に指定したバージョンは「10」でした。実際にインストールされたものは「10.5」です。10.5がリリースされたのは今年の8月で、現時点では10での最新版ですね。割と早めに新しいバージョンが導入されているようで、好感触です。流石に先月リリースされたばかりのPostgreSQL 11 は、まだみたいですが。

 

 次に、DB一覧を見てみます。

image

 初期状態では、デフォルトのpostgres以外にも2つ、DBがあることがわかります。名前的に恐らくAzure側の管理・メンテ用でしょう。これらにはウカツに触れないようにしておきましょう。

 では、試しにCREATE DATABASEしておきましょう。

CREATE DATABASE test_db_01 WITH
       OWNER = postgres
       TEMPLATE = DEFAULT
       ENCODING = ‘UTF8’
       TABLESPACE = DEFAULT
       CONNECTION LIMIT = -1
;

 

 で、もう一度、DB一覧を取得してみます。

 

image

 

 ちゃんと出来てますね、OK。

 

 これから先、しばらくAzure Database for PostgreSQLを少しいじっていってみたいと思います。なのでまた何か記事にするかも。

広告

HTC U12+で曼殊沙華を撮影してきました

 9月中旬頃に、巾着田の曼殊沙華を見に行ってきました。いいカメラなんて持ってなかったので、HTC U12+とLumia1020だけを持って、気楽にのんびりと。(もっていきはしましたが、結局、Lumia1020は出番なかったです ^q^)

 

image

続きを読む

PostgreSQL:「pg_stat_statements」がちょっと便利になってた件

 

 前回の記事の最後でPostgreSQL10にしたい、的なことをぼやいたおかげか、先日から、ようやく社内でもPostgreSQL10の対応がはじまりました。
 まあそんなに問題も発生せず無事に終わりそうなんですが、性能検証しているときに、PostgreSQLではお馴染みの「pg_stat_statements」を使ってスロークエリを探したりしてたんですね。こいつは、クエリの実行回数やかかった時間などを記録した内容を見せてくれるビューなので、性能検証などで処理が遅い部分などを調べていくときには、とてもお世話になっております。

 で、10にしてはじめて知ったんですが……実はいつの間にか、pg_stat_statementsビューのカラムが追加されてたんですよ。「min_time」「max_time」「mean_time」の3つで、それぞれ名前の通り、そのクエリの実行にかかった「最少時間」「最大時間」「平均時間」を記録してくれます。それまで使ってたVersionで記録してくれる時間は「total_time / 合計時間」だけだったので、微妙に使いにくかったんですよね。こういう追加は助かります。

SELECT
   query
  ,calls
  ,(mean_time / 1000)::numeric(7,3) AS avg_time_sec
  ,(min_time / 1000)::numeric(7,3) AS min_time_sec
  ,(max_time / 1000)::numeric(7,3) AS max_time_sec
FROM
   pg_stat_statements
–WHERE
—   (max_time / 1000) > 3

ORDER BY
   max_time_sec DESC
LIMIT 20;

※情報をリセットする場合
 SELECT pg_stat_statements_reset();

image

 こんな感じで使ってます。各時間はミリ秒単位になってるので、僕は1000で割って秒単位に変換してから見ています。検索条件次第で、解析の幅が少し広がりますね。

 調べてみたら9.5から追加されてたようです。これまではずっと9.4を使ってたので、もっと早くバージョンアップさせたかったなぁ……と思いました。いうほど大したものでもないんですけど、地味に便利になりました。この記事が、まだ9.4以前をお使いの方へのバージョンアップの一助になれば……。

PostgreSQL:複数定義があるFunctionの一覧をクエリで取得する

 

 お仕事で作ってるシステムでPostgreSQLを使っておりまして、その際のTIPSというか個人的な覚書というか、そんなことも今後はブログに書いておこうかなと。で、今回のお題はタイトル通りです。(※タイトル少し変だったので修正しました)

◆背景

 今、仕事で担当しているシステムでの話ですが、DB側に作っているFunctionが、とっっっっっっっっっっっても!多くて!!
 数多すぎてまともに管理できておらず、しかも仕様変更も多くて、引数が増えたり減ったりがザラにあります。20個以上の引数が必要なFunctionに引数追加させられて、でも数日後に削除させられたときはキレかけました。そんなことばっかりやっているため、古い引数定義のFunctionを消し忘れているという事態がチーム内で多発しました。
 で、PG側の修正が洩れていたときに、古い定義がちゃんと消してあればエラーになるからいいんですけど、消し忘れているとエラーにならないため、一見正常に動いているように見えるけど実は……ということがいっぱいありまして。

 そのため、定期的に自動で複数定義あるFunction一覧を取得してチェックしたい、という要望があって作りました。pgAdmin等でFunctionの一覧見ればすぐわかることではありますが、自動化させるためにクエリで取ることに。

 そもそもちゃんとした管理体制とか用意すべきなんですが、まずは応急措置的な感じとして。

 

◆クエリ

 こんな感じ。
(動作環境:PostgreSQL 9.4/Windows版)

SELECT
   main.proname AS function_name
  ,main.proargnames AS parameters
  ,FORMAT_TYPE(main.prorettype, NULL) AS return_type
  ,ROW_NUMBER() OVER(PARTITION BY main.proname ORDER BY main.proname ASC, main.proargnames ASC) AS overlap_count
FROM
   pg_catalog.pg_proc main
INNER JOIN (
             SELECT
                chk.proname
             FROM
                pg_catalog.pg_proc chk
             INNER JOIN pg_namespace nms
                     ON chk.pronamespace = nms.oid

—             INNER JOIN pg_catalog.pg_user usr
—                     ON chk.proowner = usr.usesysid

             WHERE
                nms.nspname = ‘スキーマ名’

—             WHERE
—                usr.usename = ‘オーナーのユーザー名’

             GROUP BY
                chk.proname
             HAVING
                COUNT(1) > 1
           ) cnt
        ON main.proname = cnt.proname
ORDER BY
   main.proname
  ,main.proargnames
;

 このクエリで、スキーマ名やらユーザー名やらで対象範囲を絞って、取得した結果が1件以上あるときは消し忘れがある、という判定で使っています。範囲の絞り込みはクエリを少しいじれば(コメントアウト部分のあたりとか)、ある程度は融通が効きますね。

 

 別に特殊なことをしているわけではありませんが、今後またどっかで使うかもしれないので。使いたい方がいらっしゃったら、自己責任ですがどうぞご自由に~。

 

 

余談:なんでもいいけど、そろそろPostgreSQL10にバージョンアップしたい。したくない?

HTC U12+の「スマートディスプレイ」

 

 前回の記事に書き忘れたんですが、HTC U12+にある「スマートディスプレイ」なる機能が結構便利で気に入っているので、追って紹介しときたいと思います。

 

 スマートディスプレイ機能は、端末のロック時など消灯時に端末を持ち上げたりすると、それを感知してディスプレイに時計と通知アイコン等を表示してくれる機能です。↓みたいな感じに。

image

 

 過去に、Lumiaで同じような機能があって結構気に入ってたので、これがU12+でも使えるのは思わぬ喜びでした。

 

 この機能は、表示する時計のデザインや表示方法などを設定から変更することが可能です。

 

image image

 時計のデザインは全8種類です。数が豊富というわけではありませんが、いくつか用意されているのはありがたいところ。

 

 

 image

 他にも表示設定に関しては、端末を持ち上げたときに表示させるようにする「モーション起動」(デフォはON)だったり、逆に常に表示させたり、あるいはスケジュールで設定した時間の間だけ常にオンにしたり、とある程度の融通をきかせてくれています。
 モーション起動をオンにしておけば、鞄やポケットから取り出したときにオンになったり、机の上で裏向きから表向きにしたときなどにもオンになったりと、何かと便利です。ちなみに表示は15秒くらいで自動的に消えるようになっています。

 

image

 

 私は上記のデザインで使ってます。時計はなんとなく、アナログ式の表示のほうがパッと見でわかりやすいので……。時計だけじゃなく通知アイコンも表示してくれます。Lumiaでは表示するアイコンを選んでそれだけが出てくる状態でしたが、こちらは、通知バーに出ているものがそのまま出てきているようですね。

 地味ながらも便利な機能で、気に入っています。こういう細かい部分で気が利いてると思える機能は、素直に評価ですね。大事に使っていきます。

HTC U12+ を購入しました

image

 久しぶりに端末を購入したので、感想でも書いていこうかな、と。

 私も今ではメイン機はAndroidとなりました。去年にファーウェイの「P10 lite」を購入して使っていたのですが、コスパがいいとはいえど最近は性能的に物足りなくなってきたので買い替えを検討していたところに、先月に国内で発売となったHTCの「U12+」に乗り換えることにしました。

 HTC U12+を選んだ理由ですが、私が買い替える端末を探していたときの条件が複数あり、

・高スペックであること(3Dゲームを行う端末にする予定のため)
・ノッチが無いこと(個人的にノッチが嫌いなので)
・国内SIMフリーとして正式に取り扱いがあること
・Android8.0以上であること

 などでした。他に、妥協した条件としては「イヤフォンジャックがあること」というものがありましたが、これも含めると一気に選択肢が狭く……というか実質無い状態でしたので……。
 昨今はノッチ付きがトレンドになっており、「ノッチ以外は条件を満たしているのに」という端末が数多くありました。そんな中で、HTCが国内投入した「U12+」は、現状で僕にとってベター寄りのベストな選択肢でした。ただしお値段9万円以上(税込でほぼ10万円!!)という超高額端末でしたので、長く大事に使っていこうと思います。

 

 

◆基本スペック

 まずは軽く、基本スペックを確認しておきます。詳細は公式サイトをご確認ください

OS Android 8.0 Oreoベース
CPU Snapdragon 845
メモリ 6GB
ストレージ 128GB + microSD(SIMスロット2の排他)
画面 6インチ スーパーLCD
Quad HD+ (2880 x 1440)、18:9
端末サイズ 高さ:15.6mm
幅:73.9mm
厚さ:8.7mm~9.7mm(含カメラ高)
重量:188g
カラー トランスルーセント ブルー(一部に透過あり)
フレーム レッド
セラミック ブラック
カメラ 背面:12Mピクセル広角カメラ + 16Mピクセル望遠カメラ のデュアルカメラ
表面:8Mピクセル x 2 のデュアルカメラ
バッテリー 3500mAh、高速充電対応(Quick Charge 4.0、Power Delivery 3.0)
その他 イヤフォンジャックなし、USB Type-C、nanoSIM、感圧式ボタン
 
 以下は画像が多めなので、記事分割しておきます。
 

続きを読む

ブログ更新を再開しようと思います。

 ご無沙汰しております、OD-10Zです。

 まずは、長らくブログを放置(更新停止)しており、大変失礼しました。Twitter上( @od_10z )では色々と言っていたのですがこちらは完全放置でした。タイトルの通り、一年ぶりくらいに更新再開してこーと思ったのですが、その前にまずは、ブログ更新停止していた経緯と、今後このブログをどうしていくかについてを簡単に書いておきたいと思います。

 

◆ブログ更新停止の経緯

 一言で言えば「W10Mを諦めた」からです。(何をいまさら感があるかもしれませんが…)
 あれほど諦めないって言ってたのに、あっさり手のひらを返してしまい、申し訳ありませんでした。

 直接的なキッカケになったのは、丁度一年前に、ワケあってAndroid版やiOS版のMS純正アプリを使い込む機会があり、そちらのMSのやる気の高さを見て、MSのやる気の差を実感してしまったことです。その当時に私がW10Mや純正アプリに感じていた不満点や使いにくい点など、その多くがAndroid版ではほとんど解決されていたりとかが多く。
 今になって去年の自分の記事を見ていても、節々に見られるMSへの疑心が、確信へと至り、一気にやる気を失ってしまった……と、いった感じです。
(※そうなるんじゃないかな、と思ってそれまで頑なに、iOSやAndroidをメインで使わないようにしていたんですけど。これは単に自分の視野を狭めるだけでしたね。反省)

 

 それから少しした頃に、皆さんもご存知のように、MSのジョー(Joe Belfiore)氏によってTwitter上で「今後W10Mに関しては新機能を追加しない」という、事実上のW10M終了宣言も出てしまいました。やる気を完全に失っていたこともあって、そのままブログ放置してしまってました。

 その後、放置したまんまもなんだかなー、と思って何度かここを閉鎖しようか、と考えたりはしましたた。ですが結局、踏み切れず、そうこうしているうちに今日に至り……。

 

◆今後の更新方針

 まず、今後このブログではW10Mに関しては特に触れません。
 後継OSやSurfacePhoneなどが出てきたときに話題にはするかもしれませんが、その程度です。そういった情報を求めて今まで本ブログを見て頂いてくれてた皆さんには申し訳ありませんが……。
 「じゃあ今後どうするのか」、「そもそも何で再開するん?」というと……実ははっきりとした方向性は無いです。ただ、再開しようと思ったきっかけは単に、「雑記でもなんでもいいから、何かしらアウトプットする癖をつけておきたい」と思ったからです。ただでさえアウトプットが下手なので、意識して継続的に練習しておかないと、もっとひどいことになりそうですから。

 ひとまずは仕事や趣味でのPG書いてるときの備忘録を兼ねた記事とか、今後自分が購入する端末(PCやAndroid機等)の感想記事とか、ふつーに日々の雑記(ゲームの話題等)とか、そんな感じになるんじゃないかなぁと思ってます。要はWP/W10Mに限定したブログでは無くなるというだけの話です。

 更新頻度も過去ほど高くないと思います。
 ここを完全に消したうえで別のブログを作ることも考えたのですが、悩んだ末、残したうえで、ここでそのまま続けることにしました。

 

 

◆その他

 重ね重ねになりますが、今までW10Mに関する情報を求めてここを見ていてくださった方々には、本当に申し訳ありません。過去記事は今後も残したままですが、一度全部のタグ等を外してしまったため、後ほど再整理しておきます。

 思い返してみれば、このブログも開設当初はWindows Mobileの「IS02 / T-01B」のブロガー向けイベントに参加したかったがために開設したところから始まっており、そのまま惰性で続けているうちに自作アプリの紹介などを書いてました。そこからWindows Phoneへの乗り換えがあり、途中からはWP/W10Mに関するニュース的な話題やTIPS的なことを書いて……と、これまでも散々迷走していた感がありますね。
 今後もますます迷走していくことになりそうです。ご容赦願います。

 

 あと、気付いていた方もいらっしゃりそうですが、少し前からブログのレイアウトをいじったりタイトルを変えたりしていました。今後は今のブログタイトル「コノ世界ニ非ズ」としてやっていきます。今回もタイトルの元ネタはMTGのカードです。

Windows 10 Mobile Insider Preview 15240.0 公開開始。絵文字の追加&更新、とバグフィックス。

wp_ss_20170810_0002 image

 日本時間で8/10より、Insider Previewの最新版である「15240.0」が、Fast Ring向けに公開開始されました。更新内容は公式ブログで確認できます。

 

 今回の更新では特に新機能はありませんが、絵文字が一部、追加/更新されています。

◆新規追加された絵文字

image

 

◆更新された絵文字

更新前↓
image

更新後↓
image

※絵文字の画像は公式ブログから引用

 

 また、Outlookカレンダーの説明が記事内にありますが、これは多分新機能ではなく、ただの操作説明です。(中国語の旧暦表示に関する説明と思われます。更新前のバージョンや通常版のバージョンでも普通に出来ますね)

 

 バグフィックスとして、
  ・SDカードにインストールされているアプリの更新時に、エラーコード「8007000B」が表示される問題
  ・通知でWindows Updateのアイコンが表示されない
 という問題が解消されたようです。
 アプリ更新時に表示されるエラーコードが「80070057」となる場合はまだ未解決であり、またHP Elite x3での優先Continuum接続時の不具合(画面向きが保存されない)も未解決のままです。

 

 7月に、Fall Creators Update向けとしては最後のBug Bashが行われており、Mobile向けの更新はほぼゼロと悲観的に思われていましたが、Bag Bashが終わってからのほうがMobile向けには更新が活発になった気がします。(活発、とは言いすぎですが)
 海外サイトなどをご覧になってる方はご存知でしょうが、この夏には「ビジネス向けの更新」があると、まことしやかに噂されています。ここ最近の更新がもしかしたらそれなのかもしれません。しかし、正直に言ってしまえば大した更新ではありません。ようやく追加された新機能の「Continuum接続時に画面向きが変更できるようになった」というものだって、それだけ?感が否めないですし。
 ビジネス向け、と最初に聞いた真っ先に思ったのが「Continuum接続時のマルチウィンドウ対応」なんですが、さてはて……。

 まだ今後に機能追加の更新が予定されているのか、それともただの噂で終わるのか。MSのやる気を確かめるためにも、実に気になるところです。

8月の月例アップデート

 8/9より、月例アップデートが配信開始されました。月例アップデートなので基本的にはバグ修正がメインで、新機能の追加はありません。

 

1.バージョン1703 - Creators Update端末向け「10.0.15063.540」

wp_ss_20170809_0002 image

 

2.バージョン1607 - Anniversary Update端末向け「10.0.14393.1593」

wp_ss_20170809_0001 image

 

 更新内容は公式サイト(1703の更新内容1607の更新内容)にて確認可能です。現時点ではまだ英語版しか存在しませんが、近々に日本語版も掲載されるものと思われます。

 今回もVAIO Phone BizはCreators Updateを受け取れませんでした。SDカードの問題などは先月時点で解決しているはずなので、まだ様子見しているとは思い難い状況ですが……もしかしてVAIOが単に忘れているだけでは

TIPS:W10Mの休日カレンダーに、「山の日」などの新しい祝日が登録されていない場合

 今年は久しぶりにまともな夏休みが取れそうだったので、ウキウキで予定表を追加していたときに、ふと気付いたことがあります。あるはずの休日が……8/11の「山の日」が休日カレンダーに登録されていない、と。

wp_ss_20170806_0006 (1)

 

 私の休日カレンダーは、時期はうろ覚えですが数年前から、WEB上のOutlook.comのカレンダーに「日本の休日」カレンダーを登録しておいたのですが、山の日のような新しい休日は、勝手に追加されてくれませんでした。んー。
 少し調べてみると、この問題は以前からOutlook.comのカレンダーに休日を追加していた人で、かつ、自動移行が何らかの理由で失敗している人に発生しているっぽいです。(本来なら新しい休日カレンダーのデータに自動移行するはずのようです)

 

 解決方法は2つあります。

 

1.「日本の休日」カレンダーを、アプリ上で表示するように追加する

 カレンダーの左上にあるハンバーガーメニューを押して、「予定表の追加」を押します。

image

 

 休日カレンダーとして、国の一覧がずらーっと表示されます。
 一番下までスクロールすると「日本」がありますので選択します。選択すると右側にチェックマークが付きますので、それを確認したら戻るボタンを押します。

image

 

 すると、「休日カレンダー」というグループができてそこに日本が表示されます。カレンダーに戻ると、ちゃんと「山の日」が出てくるようになりました。あとは、古いほうのカレンダーを消しておけばOKですね。

image image

 

2.「日本の休日」カレンダーを、Outlook.com上で追加する

 PCからさくっと直せるので、こっちのほうが楽です。WEBブラウザを起動して、Outlook.comにアクセスします。ログインしてカレンダーを表示したら、「予定表の追加」ボタンを押します。
 メニューから「休日の予定表」を選択します。

image

 

 画面右側に国の一覧が出てきますので、一番下までスクロールし、「日本」を選択します。選択したら画面上部にある「保存」ボタンを押します。

image

 

 すると予定表に新しく「日本 の休日」が追加されます。この内容がW10Mにも自動同期されますので、W10M側で確認すればそちらにも「日本 の休日」が追加されていることが確認できます。

image ←Outlook.comのカレンダー

image ←W10Mのカレンダー

 

 

 どちらの方法でも問題ないです。山の日などの新しい祝日がカレンダーに登録されていない方は、是非試してみてください。それでは皆さんもよい夏休みを!!