bashとzshのPATHの通し方で四苦八苦した

いつもなら年末にふと思い出して更新するブログだが、夏に思い出すとは珍しい。
3月末からひたすらフロントエンドのエンジニアリングに取り組んでいて、比較的最近の技術動向にも詳しくなって、WordPressにもちょっと興味が出たからかな。
とはいえ、PHPは遂に触らずにここまできてしまった。
バックエンドのエンジニアリングにも興味はあるのだが、ここしばらくはサーバレスなシステム構築を中心に取り組んでいるため、今後も触る予定は無い。
JavaScriptだけで無限に時間が溶けるので、他の言語に取り組めるほど余裕もない。(年齢的にも残り時間が少ないしね)

今日は数日前から急に使えなくなってしまったFirebaseのコマンドを復旧させるために数時間を要した。
原因はまだ慣れていない頃にsudoでFirebaseのSDKをインストールしてしまい、環境を複雑にしてしまったためその後のアップデートが滞ってしまった。そのため、10.xの環境をアンインストールしたが、このアンインストールのやり方もよくなかったようで、FirebaseのSDKをアンインストール後、11.x系のインストール後、Firebaseのコマンドが見つからなくなってしまっていた。
数日は我慢していたが、ストレスになるので改善に取り組んだものの、どこにも解決策を見出せず、途方に暮れていた。
結局、これもあれこれ試して、bashの環境変数設定(.bash_profile)とzshの環境変数設定(.zshrc)及びその切り替えを行ったり来たりしている間に元に戻った。

export PATH="`npm config get prefix`/bin:$PATH"

環境変数設定に上記を記述することで起動時にFirebaseのコマンドが通るようになった。
とりあえず使えるようになったから良し。
ということで、今夜もまだまだ作業は続く。

ほったらかし

宣言通り、日常をエスケープ

ほったらかしキャンプ場でキャンプ中

そして、暗くなってから外が少し寒くなったので

作業場所を移動

テントの中は、作業をするには狭すぎた

テントは寝るだけにして、作業は車の助手席へ

ダッシュボードに足上げて

腿の上に置いたMacBook Airも熱くならないから

夏の夜でも快適

でも、眠くなったので、ちょっと早いけどそろそろ寝まーす

明日は日常をエスケープ

明日は初のほったらかしキャンプ場

ゆるキャン(アニメ)第5話でのサービス温泉回に登場した際

最も行きたいと思ったキャンプ場だよ

ああ、楽しみすぎて眠れない

句動詞

人生何度目かの英語学習ブームが到来

衝撃の事実として

句動詞

と言う存在を初めて知った

馬鹿にされる方も多いと思うが

英語が全く分からない人のレベルなど、公教育をちゃんと受けてきた人には理解できまい

そんな些細なことはどうでも良い

句動詞、である

以前から、英文を訳す際、なんとなく基本的に習った文法では解釈に苦しむパーツが含まれる文章に出会うことがあり、その度に心折られてきた

しかし、本日、この句動詞と言う存在を知り

やっと自分が何に苦しめられてきたのか、その対象の存在をハッキリと認識することができた

この感じ、わかりますか

つまり、何が分からないかが分かったと言うこと

これは非常に大きな出来事

なぜなら、何が分からないか分かれば、対処法を検討することができるからである

何が分からないか分からなければ、どう対処すべきか検討するきっかけすら掴めない

だから、本日は誠に記念すべき日なのである

“句動詞” の続きを読む

あけましておめでとうございます

少し遅くなりましたが

無事2021年を迎えることができました

年末に引っ越しましたので

新居にて新鮮な気持ち

昨年に引き続き、コロナ禍であることは変わらないものの

人々の行動や思考は『ニューノーマル』という言葉で表されるよう

少しずつ変化に順応し始めていると思う

自分は?

そう問いかけが続く一年になりそうです

写真はドラクエウォークでの年越しタイミングで撮影した一枚

年末に11sをクリアしたかと思いきや

やり込み要素が残っていたらしく

2021年もしばらく11sで遊べそうだし

数年ぶりにXもSwitch版を購入して再開

コロナのおかげ、と言っては不謹慎だけど

家に篭ってゲームするexcuseになることは助かっている

ワンダーウーマン1984

アウトプットは大切だと書いた手前、本日年内最後の映画鑑賞となるであろう表題の作品について、感想をアウトプットしておかなければと、自分で自分の首を絞めた。

ワンダーウーマンを知らない人はいないと思うが(一応、お約束の嫌味です)、簡単に説明しておくと、アメコミブランドのDCコミックスにおいて、スーパーマンやバットマンに並ぶ人気コミックシリーズ。

ワンダーウーマンことヒロインのダイアナ・プリンスは、アマゾン族の特使であり、女神。その正体を隠して、現代社会に生きている。

原作コミックスのことを細かく描き始めるときりがないので、そんなワンダーウーマンの実写映画が2017年に公開された。表題作は、その続編となる2作目。

時代はタイトルにも付いている通り、1980年代のアメリカが舞台。人類学者としてスミソニアン博物館で研究員として働くダイアナが事件に巻き込まれていく。

(以下、ネタバレあり)

見所は、前作で死に別れた恋人のスティーブを邪神の力で蘇らせてしまうダイアナだが、その代償として女神としてのスーパーパワーを徐々に失っていく。

しかし、その邪神に魅入られ、世界を危険に晒すこととなる石油採掘ビジネスを営む実業家のマックス・ロードと戦うため、邪神との契約を破棄し、女神のスーパーパワーを取り戻す。

しかし、当然その代償には、蘇った最愛の人との、二度目の別れが待っていた。

主演のダイアナを演じるガル・ガドットはイスラエル出身の女優さんで、とにかく彼女自身がコミックから抜け出てきたのではないかと思うくらい美しい。ワンダーウーマンを演じるのに、これほど適した女優さんはいないのではなかろうか。

そんな美しくて、強いダイアナが、世界を守るために最愛のスティーブとの別れを迫られた時、スーパーヒーローでもなく女神でもなく、一人の女性として泣きじゃくるシーンでは、おそらく人種も性別も超え、そのキュートさに心臓を掴まれるのではなかろうか。このシーンを見るためだけでも、コロナ禍に映画館へ行くリスクをとる価値がある。

世界を守るため愛する人を失うダイアナ、愛する息子を守るため世界征服を諦めるマックス・ロード。その二人の対立的な構図で問いかけてくる本作は、見るものの『正義』が試される。

スーパーマンにしろバットマンにしろ、DCコミックスの映画化は、近年、マーベルコミックの映画化作品群と比較され、及第点以下の評価も多い中(クリストファー・ノーランの作品は別として)、本作は(やはり演出に各所突っ込みどころは満載だが)主演女優の魅力だけで押し切れるだけの華がある。

また、VFXも素晴らしく、コロナ禍でなかなか映画館で映画鑑賞もままならない中、わざわざ足を運ぶだけの価値ある、スカッと爽快な画作りになっていることも好感が持てる。

今年最後の映画館鑑賞作品にこの映画を選んで良かったなと、素直に楽しめた作品。

アウトプット

年末になると、忘れていたブログの更新する。

毎年、年末の恒例行事。

それでも、久しぶりに文章を書いてみると、アウトプットすることの有用性について考えさせられて、やらないよりは良い。

アウトプットは年末の大掃除である。

そんな視点から久しぶりのブログ更新をしてみよう。

今年(2020年)は、コロナウィルスの世界的な流行により、後の教科書に載るような一年だった。

かく云う吾輩も、一昨年の夏に6年務めた永田町での仕事を辞め、晴れて自由の身になってから、新たに関わりだしたロボティクス関連の仕事を通して、仕事の環境を考え直す良いきっかけができ、このコロナ禍において、それを実践するに至った。つまり、十数年ぶりに引っ越しをし、久々に個人の仕事部屋を手に入れたのである。

元々、じっとしているのが苦手な性分だと思い込んでいたので、カフェでノマド(死語)を気取っているのが性に合っていた。が、久々の個人部屋は快適過ぎて、むしろ外出しなくなった。

だからこうして、年末の夜中にふらふらと夜の散歩もせず、ブログの更新もできる。

そして、こうして文章を書くと云う行為を久しぶりに集中して行うと、文章を書くと云う行為を通じて、自分の頭の中のモノ・コトをその都度整理するのに、大変役に立つと言うことを気付かされる。

いくらインプットしても、アウトプットしないと頭の中で情報が整理されず、記憶として定着しない。しかし、アウトプットするために脳内で情報の整理を行うと、その情報はどうやら長期記憶の側へと書き込まれるらしい。

なんだか、そんな当たり前なことを今更再発見する。

そう、だから、アウトプットすることは年末に大掃除して一年の埃を払い落とし、気持ちよく新年を迎えるための、精神衛生上有効なセレモニー(儀式)みたいなものだ。

文章を人に読んでもらうこと

最近、文章を第三者に評価してもらう機会に恵まれている。

今までは書いた文章を、誰かに評価してもらうことに抵抗があった。抵抗というより、実際のところ恐怖と言った方が適切かもしれない。

もし評価が悪かったら、そう思ってつい尻込みしてしまっていた。

しかし、今年の夏、人生において大きな節目を迎えた。

それを一つのきっかけとして、一念発起し、文章を書くことと真剣に向き合ってみようと考えるようになった。

実際に行動を起こし、その機会を手に入れ、自分の恥ずかしい文章を人目に晒すことは、人前でパンツを下ろすが如く恥ずかしい。

しかし、それだけの価値はある。

書き上がった自分の文章の稚拙さに悶絶し、評価に一喜一憂し、的確な指摘に励まされるも、実際にやるとなったら思うようにいかず、心折れる毎日。

それでも、文章は書けば書くほど上手くなる。という言葉を信じて、今日も明日も自分の納得がいく文章が書けるまで、書き続けてみよう。

※この文章は自分に向けて書いた文章であり、誰かに読ませるために書いた文章ではありません。あしからず。

PythonでMySQLに接続する際、mysql.connector.errors.InterfaceError: 2026 (HY000): SSL connection error: SSL_CTX_set_tmp_dh failedが発生した場合の暫定的対処法

Pythonにmysql_connector_pythonライブラリをimportして、MySQLへデータベースを作成しようとしたところ、以下のエラーメッセージが表示された。

mysql.connector.errors.InterfaceError: 2026 (HY000): SSL connection error: SSL_CTX_set_tmp_dh failed

色々調べた結果から書くと、MySQLの認証プラグインだったmysql_native_passwordから、Ver.8.0以降caching_sha2_passwordに変更され、その関係でmy.cnfファイルに書いたdefault_authentication_pluginが従来のmysql_native_passwordに設定されている場合、上記のエラーが発生してしまうようだ。

この文章を書いている2019年以降、少し前のMySQLのVer.5系で書かれた技術書で勉強している人はハマるかもしれない罠なのでお気をつけください。

根本的な解決にはならないのですが、取り急ぎ学習を進めたい場合、以下の方法で乗り切れると考えます。

MySQLの接続に利用しているユーザーの使っている認証プラグインを調べる。

mysql> select User, Plugin from mysql.user

これで表示されるユーザーリスト上の認証プラグインを確認
対応する認証プラグインがcaching_sha2_passwordだった場合、これを従来のmysql_native_passwordへ変更してしまうと良い。

mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘P@ssw0rd’;

例えば、上のように利用しているユーザーが「root」だった場合、このようにしてmysql_native_passwordへ変更してしまおう。

この時、もう一つ罠があって、mysql_secure_installation使って認証プラグインの設定を行った際、初期パスワードの設定ポリシーをLOWに設定しても、いつの間にか設定はMEDIUMに変更されているので注意。上記で設定する’P@ssw0rd’をLOWのつもりで設定すると

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

というエラーが出て、パスワードを強化しろと怒られる。

mysql> show variables like ‘validate_password%’;
+————————————–+——–+
| Variable_name | Value |
+————————————–+——–+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+————————————–+——–+
7 rows in set (0.00 sec)

調べてみると、いつの間にかパスワードのポリシーがMEDIUMになっている。
この場合、LOWヘ戻したければ

mysql> set global validate_password.policy=LOW;

として

Query OK, 0 rows affected (0.00 sec)

と表示されれば変更に成功です。

mysql> show variables like ‘validate_password%’;
+————————————–+——-+
| Variable_name | Value |
+————————————–+——-+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 1 |
+————————————–+——-+
7 rows in set (0.01 sec)

改めて

mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘P@ssw0rd’;

今度はパスワードの強化を求められず、無事に認証プラグインをmysql_native_passwordへ変更できたはずです。
以下の要領で確認

mysql> select User, Plugin from mysql.user where User = ‘root’;
+——+———————–+
| User | Plugin |
+——+———————–+
| root | mysql_native_password |
+——+———————–+
1 row in set (0.00 sec)

念の為、MySQLサーバを再起動し

改めて、Pythonでconnect()をテストしてみてください。

conn = mysql.connector.connect(host=’127.0.0.1′, user=’root’, password=’P@ssw0rd’, ssl_disabled=True)

この時、ssl_disabled=Trueを引数に加えておくことで、SSL認証せず、続くSQL文がエラーなく実行されるはずです。

Tips書くの結構大変!
今日のところはこれまで

追記:
以下のサイトに、もっと詳しく情報が記載されていました!感謝!
https://tech.bita.jp/article/32