メニュー 蕭寥亭 検索

開店休業の記

Django で凡ミス

 今、仕事で Python の Web フレームワーク・Django を使った開発やってます。

 先日、こんなエラー(下の画像・別の環境で再現させたもので、この開発の画面そのものではありません)が。

NoReverseMatch

 メッセージの先頭で "NoReverseMatch" とか言ってますね。これは「 URL の逆引きで一致するものがなかった」ってことになります。

 真ん中あたり、背景色が灰色になった部分の先頭では、"Error during template rendering" とあって、これは「エラーはテンプレートの処理の最中に発生した」ということです。

 なので、最初「これはテンプレートのリンクの URL の書き方を間違ったんだな」と思い、該当のテンプレートをくまなくチェックしたんですが、問題なし。ありっ?

 よく見るとメッセージに "error at line 0" って出てる。ゼロ行目って、どこよ?

 「これは別の場所が問題か」と考え、思い当たるのは URL の設定場所である urls.py 。しかし、確認しても問題なし。そういえば別のページで同じ URL の逆引きしても出ないしな。

 次に怪しいのは views からテンプレートに渡される context データ。この URL の逆引きには引数が必要で、その引数の値は context データに入れることになっていたのですが、エラーメッセージの " with arguments" の後のカッコの中が空で、引数が渡されてないみたい。引数用のデータが設定されていないのか。きっと、それだ!

 views.py を見てみました。

   context["aaa"] = "aaa"

 ちゃんと設定されてる・・・、なんでだ?

 その後、半日悩んで、原因判明。

 views.py はクラスベースで書いているのですが、エラーが発生したページ用のクラスの context データは、他のクラスの context データとほぼ同じだったので、そちらからコピペしました。その際、うっかり、メソッド get_context_data の最後の部分 return context を上書きして消しちゃったんですね。つまり、下の図のように。

get_context_data・コピペ前後

 return context がないとせっかく設定しても、反映されないのですね。しかも、なくても、get_context_data ではエラーにはならないという。

 わかってしまえば、「こんなことで半日つぶしてしまうとはっ!!!」ってな、おバカさんな凡ミスなんですが、エラーメッセージからでは読み取りにくいミスでもあるんですよね・・・。必要なデータが格納される context の設定には注意しても、return context までは気が回らないしさ。ええ、言い訳ですとも。

 このミス、前の現場でもやってたような気が・・・。ああっ、学んでないっ!

 今後の戒めとして、恥を忍んで、ここにメモしときます。

scp の不具合について

 仕事で遭遇した不具合について、メモ。

 scp( Secure Copy )ってのは、SSH を利用して、あるシステムから別のシステムへネットワーク経由でファイルをコピーするためのコマンドです。

 これを使って対象のディレクトリをまるごとコピー(オプション -r でディレクトリの再帰コピーが可能)していたところ、ある日、こんなエラーが出るようになりました。

$ scp -r ./xyz/.data remote:/test

scp: realpath /test/.data: No such file

scp: upload "/test/.data": path canonicalization failed

scp: failed to upload directory ./xyz/.data to /test

 今まで使えたものが急に使えなくなったので、「どうしたものやら」としばらく調べてようやく原因が判明しました。

 今年の4月に OpenSSH がバージョン 8 から 9 へとメジャーアップデートされまして、同時に scp のデフォルトのプロトコルも変更されました。この影響でコピー元のシステムの OpenSSH のバージョン 9 で、コピー先のバージョンが 8 だと、バージョンの不整合によりエラーが発生する場合があるんだとか。

 どうやらコピー元のシステムがいつのまにか新しくなっていて、OpenSSH も最新版になっていたのに、コピー先のシステムは古いままだったのでコピーに失敗していたようです。

 対策はありまして、scp にオプション -O(大文字でオー)を追加すれば以前のプロトコルを使うようになり、不整合が発生しなくなります。具体的には以下のようにしました。

$ scp -r -O ./xyz/.data remote:/test

 これで解決しました。わかりにくい不具合でした。

PC用モニタ、買い換えました

 今年の正月、PCの画面が突然真っ暗に。

 「あっ、落ちたか」と思ったんですが、PCが落ちても画面が真っ暗ってことはないはず。よく見てみるとモニタの電源ランプが消えていました。スイッチを入れ直しても電源ランプが点かず。電源プラグを一回抜いてから挿し直すと、今度は電源ランプが点灯し、画面も元に戻りました。

 そんなことが2度ほど。

 使っている液晶モニタ・三菱電機の RDT234WX は8年前に買ったもの。

 だましだまし、まだしばらく使えなくもなさそうだったんですが、そろそろかねぇ、と新しいのを買いました。Dell の 27インチ液晶モニタ・S2721D です。今回は現物は見ないでネットの評価だけで決めちゃいました。ゲーム用途は考えていないし、それなら大手のどこのブランドのを使ってもかつてほど性能の差はないらしいので。ちょうど割引セールやってたってのもありますが。税込26,236円也。ありゃ、RDT234WX より安いや。500円くらいだけど。

Dell の 27インチ液晶モニタ・S2721D

 23インチ・1920×1080 から 27インチ・2560×1440 に画面が大幅に広くなってなんだか落ち着きません。と、前回買い替え時とまったく同じことを言ってしまいましたが、こういうのってすぐ慣れます。

 入力は HDMI が2つに DisplayPort が1つ。RDT234WX は HDMI が2つ、D端子が1つ、D-SUB が1つだったので、単純に数だけなら減りましたが実用上は問題なし。リモコンもなくなりましたが、こちらも実用上は問題なし。

 心配される初期不良はありませんでした。ドット抜けもなし。スピーカー内蔵ですが、使ってないのでどんなもんだか。

 モニタなので肝心なのは視認性ですが、個人的には初期設定の輝度とコントラスト比は高すぎ。ギラギラして目が痛いです。どちらも75%でしたが、わたしは輝度30%、コントラスト比50%に落として使っています。

S2721D の設定の輝度とコントラスト比

 調整後は RDT234WX 同等というか、特にきれいになったという印象はありませんが、普通に見やすいです。色味も不自然さは感じません。動画再生時も特に問題なし。普及価格帯の製品ですんで、それなりの用途なら十分満足できる性能ではないかと思います。

 恒例の消費電力チェックですが、画質調整後の状態では、待機時はほぼゼロ、起動時最大 13.8W 、起動後安定状態で 11.2〜11.6W というところです。画面は広くなっていますが電力消費は RDT234WX より少なくなっています。さすがに8年経ってると進歩しているのですね。ちなみに輝度とコントラスト比を初期状態に戻すと 17.0〜17.2W くらいでした。メーカーの公称の消費電力は標準で 19W になっています。

 なお、この製品は PCリサイクルマークの対象になっています。しかし、ざっと見たところ、マークが見当たりません。RDT234WX 同様、申し込まないといけないのかと思いましたが、背面のカバーを外したところ、小さいマークがついていました(下の画像赤丸部分)。

S2721D の PCリサイクルマーク

まあ、わかりにくい。

VirtualBox + Windows 10 + RC-S380

RC-S380

 いろいろ使うことになりそうなので、マイナンバーカード、作りました。

 マイナンバーカード利用者向けのポータルサイト、マイナポータルにログインするためにはカードの読み取りができる ICカードリーダライタかスマホが必要です。スマホはあるのですが、いちいちカメラでQRコード読み取りとか余計な手間がかかるようなので、ICカードリーダライタ・SONY の RC-S380 を買いました。

マイナポータルにログインできず

 しかし、Linux Mint ではログインできず。Linux は対応 OS に入ってないんですね。よくあることですが・・・。

 こういう時のために VirtualBox に Windows 10 を入れてあります。仮想環境上からでもデバイスをちゃんと認識してくれるかが問題ですが。

 結論からいうと、認識されます。最初、仮想環境の Windows 10 を起動した後で RC-S380 をホストの USB ポートに挿したら認識されませんでした。いったん、Windows 10 を終了させ、念のため、 VirtualBox マネージャーも停止・再起動させてから [設定] → [USB] の [USBデバイスフィルター] に RC-S380 を追加(ホスト上で認識されていれば、追加時の候補リストに出てきます)。

VirtualBox マネージャー [設定] → [USB] の [USBデバイスフィルター]

 それから仮想環境の Windows 10 を起動すると、RC-S380 が認識されるようになりました。マイナポータルにログインすることもできました。

 なお、VirtualBox のバージョンは 6.1 、Guest Additions は入れていますが、 Extension Pack は入れてません。

けったいなこと

 OS を Linux Mint に戻しまして、概ね順調なのですが、一点問題が。

 ハードディスクに収納してある音楽を聴きながら、ブラウザであるサイトの翻訳ツールを使っていると、音楽にザーッという感じのノイズがかぶるようになりました。そのサイトを閉じてもノイズは消えず、音楽を聴きながら作業をすることができなくなりました。

 少し試してみてわかったことがいくつか。

 ・音楽プレーヤーアプリを代えてもノイズは発生する。

 ・FireFox では発生するが、Chromium では発生しない。

 ということで、そのサイトについては Chromium で開くことにして、一応対処できましたが、原因は不明のまま。Mint が悪いのか、FireFox が悪いのか、そのサイトに問題があるのか、謎です。MX Linux の時は同じように使っていてもこんな現象は起こらなかったんですが。

Mint に戻りました

Linux Mint のデスクトップ

 昨年春に新調した自宅PC、OSは MX Linux 。

 だったのですが、最近、「ファイルが破損している」というメッセージが APT 関連で表示されるようになり、おかしいなと思っていたら、みるみるうちにいろいろなソフトが起動しなくなり、ファイルマネージャーまで動かなくなったので、「これはマズい」とあわてて、OS再インストール。

 緊急事態だったので、今度は手慣れた Linux Mint にしました。

 で、普段使いのソフトを入れ直して、今ようやく一息。

 開発に使っていたエディタ・Atom は、Go 言語のツール類入れたらどうも様子が変(起動のたびに go get で同じライブラリを取りに行く)なので、諦めて MS 謹製・Visual Studio Code をお勉強中。そういや、いつのまにかデータベース操作ツールは DBeaver に、動作確認用の環境、前は VirtualBox に一式作ってたけど、今は Docker でデータベースとメールサーバ( FakeSMTP 、便利!)用意すれば、せっかくのデスクトップ Linux 、お手軽に動かせる!

 やっぱり時は流れているんで、いろいろ変わっていくんだな。

最近のスマホ事情

 2015年に大手通信キャリアから MVNO に切り替え、スマホもSIMフリーの富士通の ARROWS M01 にしました。

 あれから6年。

 その間に、機種変更のお誘いにまんまと乗ってしまい、同じ富士通の ARROWS M04 にしました。

富士通 ARROWS M04

 去年あたりから、政府が携帯電話料金値下げに躍起になっており、その圧力を受けて白旗挙げた格好の大手通信キャリアが続々と値下げプランを繰り出してきました。あれっ、わたしが MVNO に切り替えた当時、政府は「 MVNO の更なる参入による競争促進を図る」とか言ってませんでしたっけ? 急にどうしたのよ? もう訳わからん。

 あおり食った MVNO の中にも値下げに踏み切るところが出てきましたが、わたしが使ってたところはその体力がなかったのか、沈黙しておりました。

 そんなこの春、「基本料金値下げに加えて新端末格安にするから乗り換えない?」というお誘いにまんまと乗ってしまい、契約先をOCNモバイルONEに変更、端末はシャープの AQUOS sense4 になりました。MNP 転出手数料もこの春から無料化されたこともあって、1年使えば基本料金の差額で端末代金回収できるし。

シャープ AQUOS sense4

 大手キャリアは興味ありませんでした。キャリアメールは必要ないし、設定は自分でできるし。使い放題っていっても、わたし、外では主にメールと電話、あとは交通機関の時刻確認に地図、ニュースを少々、というところでゲームしない、動画も見ないので、今まで3ギガでほとんど収まってたので魅力を感じなかったし、在宅勤務が増えて余計に使わなくなってましたし。家でネットは固定回線がありますし。それなら MVNO の方がやっぱり安い。今までトラブルというトラブルもなかったと思いますしね。

 AQUOS sense4 については・・・、あんまりスマホに関心がなくなっているので、言うべきことも特にないのですが・・・。ん〜、つまり、そういう人に手頃な機種なのかもしれません。動作速度はゲームやらないなら問題ないと思いますし。特筆すべき機能はないようですが、わりと電池持ちはいい感じ。初めて顔認証付きの端末になったんですが、外ではマスクしてるから役に立たない・・・、せっかくの機能が。

 乗り換えで余った ARROWS M04 はとりあえずウェブカメラの代用として使ったりしました。自宅のデスクトップに付けてなかったので。M04 に iriun webcam という Linux でも使えるツール入れて、デスクトップ側にも連携させるソフト( Ubuntu 用が開発元のサイトにあり、MX Linux でも使えます)入れて、自宅内 Wi-Fi 経由で接続させています。マイクは別途買う必要がありましたが、これで Zoom にも Teams にも。

 M04 は電池がややヘタってきているものの、機能的にはまだ使える状態なので、やっすいSIM挿して自転車用のGPSトラッカーにするとかいいかも、と考えて、ネットでとにかく安いトコを探してみたら、楽天モバイルの UN-LIMIT って1ギガまで無料なんですね。散々宣伝してたのに、フロッピーディスク並の記憶容量しか持たないわたしの脳には記憶されてなかったわ。新興なので電波が入る地域が限られているらしいですが、これなら使わない時でも維持費用がかからないので、おあつらえ向きです(いつまで続くかは疑問にせよ)。

 ただ、UN-LIMIT は対応機種が限られてて、それ以外はSIMフリー機でも動作保証対象外になります。楽天モバイルのサイトで調べると、M04 は非対応で動作保証なし、ただし一部の機能・4Gデータ通信と楽天回線を使っている時に限り(他社回線の時はダメ)SMS を利用できるとのこと。通話は不可で、APN の設定は自分でやらなきゃいけないし、地震速報とかも入ってこないらしい。

 でも別にちゃんと使えるのが1台あるわけで、一部機能しか使えなくても特に困りません。余剰品の再利用なんでそれで十分、十分。使わなきゃ0円だし(正確にはユニバーサルサービス料が月3円かかるとのこと)、契約事務手数料も今はかからないなら、お試しで使ってみればよろし。

 申し込んだ翌々日にSIMが届き、早速 M04 にセット。

 APN の設定は添付の説明書通りで、特に迷わず。

 WiFi の接続を切ってもアンテナマークは出ており、ブラウザを使ってみるとデータ通信はできているよう。おっけ。

 無料で通話・SMS を利用する場合は専用アプリを使わないといけないということなので、インストール。起動したら、まずログイン。その後、SMS 認証画面が表示されたのですが、コード発行のボタンを押しても SMS で届くはずの認証コードが届かない。

 「ありゃ、こっちはダメなのか」と落胆しかけましたが、気を取り直してネットで情報をあたりました。すると、楽天モバイルのサイトで SMS 認証ができない場合の対処法が記載されていたのでそれを参考に、①専用アプリからログアウト、②専用アプリを終了、③ M04 を再起動、④専用アプリを起動して最初からやり直し。今度は SMS で認証コードが届き、認証成功、利用画面までたどり着きました。

 ダメ元で専用アプリ使って M04 から sense4 に電話かけてみたら、あっさりつながりました。逆もおっけ。通話、使えるみたいですけど・・・?

 動作保証がない機種なので、何か問題があるのかもしれないですけど、無料通話も可能となれば利用価値がぐっと上がります。得した♪

サーバ、更新しました

 3年ぶりにサーバを更新しました。

 最初は「そろそろ3年、OSを更新すっかな」くらいの軽い気持ちだったのですが、いろいろあってけっこう大がかりな作業になってしまいました。

 一つはスマホ対応ですね。ここ数年、当サイトへのアクセスも多くがスマホからになっているのは気がついていたのですが、わたし自身はウェブサイト閲覧を専らPCでしていて、スマホからはほとんどしないのであまり積極的になれなかった、ってのがあります。それにデザイン苦手・・・。

 しかし、Google様のご意向もありましてですね、そろそろ、そんなワガママもとおりにくくなるらしい。まったく世知辛い世の中だぜ。

 ということで、スマホにはスマホ向けの画面を表示できるようにしました。更新前よりは見やすくなったと思いますが、いかがでしょうか?

 画面をスマホ主体に考えて作り直したので、PC用画面はむしろスマホ用に合わせる、という感じになりました。またひどいデザインになりましてご批判はいろいろあるかと存じますが、ひとえにわたしの能力不足によるものですので、平にご容赦くださいませ。

 それと、うかつにも更新作業に入ってから気がついたのですが、当サイトが利用していた無料のDDNSサービスが5月あたりから使えなくなってしまっているようです。当サイト開始以来、お世話になっているところで残念ですが、無料サービスを長期にわたって提供していただき、感謝です。

 こうした事情で、新しいDDNSサービスへ移行することになり、ドメインも新しくなりました。今のところ、旧来の gok.dip.jp でアクセスできていますが、早晩使えなくなると思われます。トップページには新しいURL・https://gok.0j0.jp/index2.htm でお願いします。似てますけど、"dip" の部分が "0j0" になりましたので、ご注意ください。

新デスクトップPC、その後

VirtualBox 上の Windows 10

 新デスクトップPCに VirtualBox 入れて、仮想マシンのOSに Windows 10 、さらに MS OFFICE 2019 を入れてみました。CPU は2つ、メモリは8GB 割り当てています。仮想マシンはホストのシステムとは別に、専用の SSD においてあります。

 ブラウザや Excel をちょろっと使ってみました。勤務先で貸与されている第8世代 Core i7 のノートPCと比べれば若干もたつく感がなくもないのですが、気になるほどでもありません。仕事などでオープンソースのオフィスではなく、どうしても MS OFFICE が必要になることがたまにあるので(渋々)入れてみたのですが、OFFICE 文書作成くらいならこれで十分かと。以前は普通にハードディスクに単体インストールして、デュアルブートで Linux と切り替えて使っていたのですが、わたしはもうこれでいいです。

 それと新ハード購入時恒例の電力測定をしてみました。例の簡易検電器・ワットモニターを使ってます。

 結果は

   待機時:2.1〜2.3W(旧PC:0.5〜0.6W)

   スイッチオン〜OS起動までの最大値:95.5W(旧PC:92.7W)

   OS起動後の安定状態:56〜60W(旧PC:49W)

でした。

 いずれも旧PCより上がってます。カタログスペック上はかなり性能向上しているはずなので、しかたないところでしょうか。でも、待機時に電気くってるのはきっとアレだよな、ムダに光るLEDのせいだよな(不本意)。OS起動後の安定状態については、結局 SSD 2台にハードディスク2台も内蔵させてしまっているのでやむなし。

MX Linux にしてみました

MX Linux

 新デスクトップPCなんですが、OS は今人気の MX Linux にしてみました。

 これまで使ってきた Linux Mint がいやになったから、というわけではありません。むしろ気に入っているのですが、今回、タイミングが悪くてねぇ・・・。新バージョンが出る直前なんですよ(多分、再来月に発表されるのではないかと)。せっかく買ったハード、それまで寝かせとくのかっていうと、それはもったいない。といって、新しいハードに古めの OS 入れるのもつまらない。ならこの機会に新しいものに挑戦してみよう、ということです。

 しかし、この MX Linux 、インストール時にトラブルが発生!

MX Linux インストールDVDの最初のメニュー画面

 インストール・イメージをDVDに焼いて、起動させたら最初のメニュー画面(上の画像)まではちゃんとでたのですが、その後、真っ暗になって何も表示されなくなってしまいました。

 原因はビデオカードのようです。MX Linux だけでなく他のディストリビューションでも発生しているらしいのですが、Radeon のドライバに不具合があるとのこと。

 幸い起動スクリプトにオプションをつけることで対応できます。


MX Linux  インストールDVDの起動スクリプト編集画面

 最初のメニュー画面で 'e' キーを押して編集画面(上の画像)に入ります。

MX Linux  インストールDVDの起動スクリプト編集部分

 "linux /antiX/vmlinux quiet splasht nosplash" の後に " amdgpu.dc=0" を追記してください(例:上の画像)。それから F10 キーを押して起動させると正常に表示されるようになります。インストール後は修正されたドライバが入るようで、特に起動スクリプトをいじる必要はなくなります。

 ということで、無事インストール完了し、現在環境整備中。日本語関係は入力等少し自分で設定しないといけません。デスクトップは Mint の方がスッキリしてる感じで好みですが、MX は最初から用意されているツール・アプリが豊富で便利です。

 そう、プリンタを使えるようにしようと思って「印刷設定」を開いてみたら、すでにプリンタが認識されていて印刷できる状態でした。

MX Linux  印刷設定

 さすがにスキャナ機能については使える状態にはなっておらず、別途ドライバインストールが必要でしたけど、今は楽になったのね・・・。