Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

OSS-DB Silverに合格した

f:id:fa11enprince:20210227192334j:plain
IPAの情報処理技術者試験を受けたかったのだが、毎度のごとく申し込みを忘れてしまう。
今年はコロナで特に忘れやすい。
実は春のITアーキテクトも受けたかったのだが、今日テキスト買って、サイトを見ると…もう申込み終わってる。
本屋にたくさん平積みしてあったのに…( ^ω^)・・・
うっかり3000円くらい損してしまうのであった。
ということでIPAのメールニュースに登録してみた。
あとiCloudカレンダーで次の秋試験の申込できる日あたりに予約を入れておいた。
今日はOSS-DB Silverを受けてみた。
PostgreSQLの試験なので比較的標準的なデータベースで他にも応用が利きそうと思って受けてみたのですが…
実際にはPostgreSQL特有の運用管理のコマンドやらの単なる暗記ゲーでした。
DockerコンテナでPostgreSQLサーバー立てて遊んだりしましたが、
気づいたときには破棄してたりであまり手を動かしてません。
電子書籍の教本を買いましたが、頭に入りませんでした。HTMLならまだ頭に入るのに、 紙に似せたI/Fだと目grepと目Indexが作成できないのでやっぱりなんだかなぁと。 電子書籍は漫画とかは割と相性がいいと思うのですが。 最近メインで使っているのはMongoDBですが、SQLとRDB忘れちゃならんよね。

PostgreSQLはMySQLよりも癖はないといわれるがPostgreSQLもPostgreSQLでやっぱり癖はあると思う。
IPAの試験受けられないので、他の試験受けようかなー。でも他は高いんだよな。
ただ意味のある資格を受けないとなと思います。
某機械学習のとある試験とかってあれほぼ無意味ですよね。
あれで機械学習をわかる気になってもらっては困るのだ……。
あれをやるよりかはプログラミングまでしなくていいから
ロジスティック回帰とか
ニューラルネットワークの数式の意味するところとかをまじめに勉強してほしい。
それがわかると、何ができて何ができないのかがそこそこ判断できるようになると思う。
神の力で特徴量を抽出みたいに思ってるやつ多すぎる。
やっぱりちょっとでも仕事で関わる人はこれを見てほしいですよね。

まとめ

  • 本文に書いてないけどデータベーススペシャリスト取ります!と言っておいて申込忘れたので慌ててOSS-DBを受験し、無事合格。
  • 買い物をする前に、バリデーションをしましょう。お金無駄にした。
  • 勉強の本は紙の書籍を買うべき。

macOS Big Surにアップデート

f:id:fa11enprince:20210112022630j:plain 以前Catalinaにアップグレードして痛い目にあっていたのでMojaveのままにしていたのを
Teams入れてみたいなということで、ほかのソフトの互換性をあきらめてBig Surへあげることに。
軽い気持ちでアップデートに臨んだら、いったん文鎮化して復旧したときの記録です。
なんだかんだでインターネットからリカバリできるのは強い。
互換性とかを気にする人はMojaveから当面上げないほうが良いかも…。
僕のように大した用途でしか使ってなければ、やっちまいましょう。
(メインのマシンはWindowsデスクトップ機です)

要約

・アップデート前にはTime Machineやっとけ
・データをバックアップしましょうね
・うまくいかない場合は、サポートされてるものなら、ディスクパーティション全消しすればなんとかなるよ。

私の環境

iMac (Retina 4K, 21.5-inch, Late 2015)
CPU: 3.1GHz Intel Core i5
メモリ: 8GB DDR3
ストレージ: 1TBハードディスク
ちょっと古めのiMacです。購入自体は2017年あたりだったでしょうか。
Swiftを使いたいがために買ったMacでした。

とりあえず普通にインストール

MojaveからCatalinaを飛ばしてBig Surへ
インストールして再起動してリンゴマークが表示されて
残り1分未満...」の表示で固まる
訓練されたマカーには与えられた試練。
こんなの朝飯前です。想定の範囲内。
私はMac製品も好きですが、どちらかといえばドザーです。すみません。

電源ボタン長押し強制終了で対処

電源ぶっちんして起動しなおすと治るとの報告があったのでやってみる。
そのあと電源ボタンから起動しても無限再起動状態に
見事に文鎮化しました(^人^)。
失敗

リカバリモードで起動

⌘(command) + Rでリカバリモードで起動する
このモードでは最新のバージョンにアップグレードせず、
Macに最後にインストールされていたバージョンのmacOSを再インストールするということらしい。
ただ、この場合も私の環境ではBig Surでした。
そうすると今度はワイヤレスマウスが効かないので有線マウスにして操作を続行
どういうことだってばよ…ドライバが何らかの理由で死んでるのか?
Big Surをインストールする
そうすると今度は…
ソフトウェア・アップデートの適用中にエラーが起きました。
「OK」ボタンだけが出現します。
OKじゃねーよwww
失敗
神は乗り越えられる試練しか与えないのだ(嫌いな言葉No1!)

Time Machineでリカバリを試みる

リカバリモードでTime Machineを選ぶも、「Time Machineを検索中」でだめ。
エンドレス検索。
もちろんTime Machineでバックアップとってない。マカーとしてはあるまじき行為です(笑)
失敗

リカバリモードでインストールをし直す(1回目)

option + ⌘(command) + R
このコマンドを使うと、Macと互換性のある最新のmacOSにアップグレード、という
コマンドだが、私の環境の場合はBig Surになる。
ディスクユーティリティでシステムパーティションのみを削除して
OSをインストールしなおししようとするもどうもうまくいかない。
やはりデータ領域も消さないとだめか…
とおもいつつThunderBolt2のケーブルないしなぁ…。
と、データを残したいのだがうーん…。
まぁそんなに大事なデータはMacにはないからいいんだけれども。
失敗

リカバリモードでインストールをし直す(2回目)

shift + option + ⌘(command) + R
macOS 10.12.4以降Macに付属していたmacOSか、
それに最も近く現在利用できるmacOSを再インストールされます。
とのことで、Sierraが出てきた。おいおい古すぎ。
あきらめて、データ領域を消してクリーンインストールする作戦にすることにする。
このモードだとAPFSが扱えない(そりゃそうだ)。

データを救い出す

幸いMac Book Air Early 2016 (Catalina)のマシンがあるので一応APFSのディスクが読めるマシンはある。
データを取っておきたいのでThunderBolt2のオス/オスケーブルを用いて、
Macをターゲットディスクモードで起動しデータを抜き出す。

……もちろんThunderBolt2のケーブルを持ってないので、家電量販店へ…
別に純正でなくともよかったのだが、さっさと復旧したい。
在庫が2mのしかなかったそうで4500円のダメージを受ける
さて、でかいデータがディスクに1TB弱あるのをどうしようということで、
外付けハードディスクへ…
当然、外付けHDDはNTFSなので、ParagonのMicrosoft NTFS for Macを追加で買う。

Macしかない人はMac拡張とかでいいと思うけど。
アプリのデータはいらないので退避しない。
ユーザーのデータフォルダだけ退避する

リカバリモードでインストールをし直す(3回目)

option + ⌘(command) + R
再びリカバリモードでディスクユーティリティからディスクを全部消した状態で消す。
マイナスボタンでパーティションを全削除して、
最後に新たなパーティションを作成します。この記事とやり方は一緒です。

インストール中、不安な挙動はあったものの(プログレスバーが戻ったり、画面が一瞬灰色になったり、リンゴマークがおかしくなったり)、無事Big Surをインストールできました。

アップグレード後の所感

今回の変更はついにバージョンが10から11に上がったということもあり、やはりでかいです。
ハードディスクモデルなのでもともと激遅なのですが、
ディスクを消した恩恵が多分でかくて、早くなりました。
UI/UXも全体的に良くなった感じがしました。
M1 Mac欲しい…。でもアーリーアダプターではないので、買うとしても1年後かな。
あと、Mac製品は2個以上あったほうがいざというときに何とかなりますね
(TimeMachine使えよって話ですが…)。
……ParagonさんAPFSを読めるWindowsソフトも出してるんだ。
けど、ThunderBoltのインターフェースはちょっときつい( ^ω^)・・・

親プロクシがあるときのSquidの設定方法 Windows編

f:id:fa11enprince:20201227234532j:plain 何らかの理由で閉じたネットワーク内で、いわゆる踏み台の内側にネットワークを組んでいる場合、
その内側のマシンからインターネット接続をしたいことがあると思います。
その場合、例えば企業内のネットワークでインターネットに出る場合
Proxyを経由しないといけない場合があると思います。
踏み台には単にProxyの設定をすれば踏み台からインターネットアクセスができます。
では、内側のマシンからの場合はどうするかという内容です。
多段プロクシをすればいいのです。この場合、親になるプロクシは親プロクシとか上位プロクシと呼ばれたりします。

踏み台の設定

構成は次のような感じとします。IP体系がへんてこなのは実は私が実験している環境がHyper-Vだからです。
普通に社内と192.168.1.0/24のNICを2つ持っている踏み台があると思ってもらえばよいです。 今回は、192.168.185.224/28ですが…。 踏み台もdev01Default Switchを使っているのでプロクシを通さずとも、インターネットに出れるので
私の環境を再現した図としては、この図は正確ではないですが、
開発用のネットワークだとありそうな感じかなと思っていただければ…。 f:id:fa11enprince:20210101011345p:plain
本当に同じ環境をしたい場合は下記リンクのように 踏み台にNIC2枚(外部スイッチとプライベートスイッチ)をつけてください。
Hyper-Vのスイッチの違い - 海を飛んで君の許へ。
そのうえで、片方をプライベートスイッチにしてください。

企業プロクシに見立てたフリーで公開されているプロクシで下記を使います。
http://www.cybersyndrome.net/plr6.html

150.95.198.104:3128

これをWindowsのProxy設定で設定すると当然踏み台からは
Edgeとかでインターネットにつなげるはずです。

Squidの設定

では、内側のマシン(例:Dev01)からの場合はどうするかというといくつか方法がありますが、
Squidを使うパターンでやってみます。
Squid for Windowsのインストールをします。
バージョンは最新版で3.5.28です。
https://squid.diladele.com/

最近数日間だけこのサイトが停止していました…(ドメイン更新忘れかな?)。

ダウンロードしたsquid.exeをダブルクリックしてインストールをします。
特に設定項目みたいのはなく、デフォルトのままでOKです。
既定ではC:\Squidにインストールされます。

C:\Squid\etc\squidをエディタで開き設定を末尾の行に追加します。
もちろんタスクバーに常駐しているのでそこから開いてもかまいません。 この記事で重要なのはここだけです。

# parent proxy server
cache_peer [親のproxyのhost] parent [親のproxyのポート] 0 no-query
icp_port 0
never_direct allow all

を追記します。 キャッシュサーバーとして動作させるときにicp_port 0とするのですがたいていこれでOKです。 never_direct allow allは送信元(このSquidの利用元)からインターネットへの直接アクセスを禁止します。
今回の場合は、

# parent proxy server
cache_peer 150.95.198.104 parent 3128 0 no-query
icp_port 0
never_direct allow all

となります。あとは

以上でおわりですが、Firewallも忘れずに開けておきましょう。 Windowsのファイヤーウォールの設定で、 受信の規則で3128ポートを許可します。※キャプチャはお試しWindows 10 Enterpriseの英語版です。 f:id:fa11enprince:20210101015314p:plain

あとは閉じたネットワークのLinuxマシン等から(もちろんWindowsでもOK) /etc/environment等にhttp_proxy, https_proxy, no_proxy変数等を設定すればよいでしょう。 今回は面倒なのでUbuntuのFireFoxにProxy設定を入れます。 Windows(Squidサーバー)のIPは今回でいうと、192.168.185.227:3128なのでそれを入力します。 f:id:fa11enprince:20210101103259p:plain

参考

Squidによるプロキシサーバーの構築
水銀室 Squidで多段プロキシーを設定する -CentOS最短構築支援-
上記リンクはそれぞれの設定値の意味を細かく書いてくださっているのでわかりやすいです。

トラブルシューティング

Squid通らないぞと思ったらまずはマシン同士が通信できるかping等で確認してください。
もちろんpingもWindows Firewallの設定を解除してあげなければなりません。
【Windows 10対応】Windowsのファイアウォールで「ping」コマンドへの応答を許可する:Tech TIPS - @IT
また、ちゃんとProxyを介しているかどうかはC:\Squid\var\log\squid\access.logを見てください。 Windowsの仮想スイッチの概念わかりにくいなー。
デフォルトスイッチ・外部スイッチ・内部スイッチ・プライベートスイッチがある。。。 デフォルトスイッチと外部スイッチの違いがよくわからん。

あと、ちゃんとSquidつかうならログのローテーションの設定を忘れずに!

2020年の振り返り

f:id:fa11enprince:20201231035937j:plain 今年取り組んだ技術の振り返りです。

認証・認可

LDAP(OpenDJ)
OpenId Connect/OAuth 2.0(OpenAM)

Webアプリ

Node.js(Express)

リバースプロクシ

Nginx

データベース

MongoDB

データ分析・簡易的な定型処理

Jupyter/Python

仮想化

VMware ESXi
Docker

サーバー

AWS(EC2/S3/Route53)
Azure(Virtual Machines/Blob Storage)

総括

あまり目新しいことやってないなーと感じています。
認証・認可のOpenAMだけが唯一新しいくらいかな。
あとは設計書とかその辺のドキュメントだったり、品質管理だったり、そんなところの比重も多かったですかね。