消しゴムカバー

消しゴムカバーを作ってみた。

消しゴムカバー

引き出しを整理していたら、くたびれた消しゴムが発掘された。
裸で発掘されたので、この消しゴムカバーを作ってみる。

くたびれた消しゴム

材料は、スープの箱。

スープの箱

切り出す。

切り出す

ぐるっと折って、接着する。

接着する

完成!

完成!

これでヨシ!

トイレ照明いろいろ

これまでに交換してきたトイレ照明を紹介。

トイレの電球

トイレで使用する事だけを考えれば、普通の白熱電球で事足りていて、ぜんぜん不満はないのだけれど、昨今のエコ推進に合わせて、より消費電力が少ないものを、より寿命が長いものを、より明るいものを、よりコストパフォーマンスのよいもの(安価なもの)を求めて、いろいろ買い替えた。

【白熱電球/48W】

白熱電球/48W

さすがに白熱電球は消費電力が大きい。
しかし、ぶっちゃけ、トイレ用としては、そう点灯時間が長いわけでもないし、この明るさで十分と言えば十分なので、この電球でぜんぜん不満はない。
ととえば大型店舗とか、従業員数が多いオフィスなどであれば、点灯時間も増えるだろうけれど、うちのオフィスでは、1日の点灯時間はせいぜい15分とか20分程度だと思うので、正直言うと、買い替える方がエコではないとは思うけど、それを言ったら話が終わってしまうので、それは考えないことにする。(^^;

【電球型蛍光灯/13W】

電球型蛍光灯/13W

消費電力は一気に下がった。
寿命まで使っていないけれど、白熱電球より寿命は長いはず。
電球型蛍光灯で、よく言われる難点としては、スイッチをオンしてから点灯までに一瞬のタイムラグがあると言われるけれど、うちの場合、スイッチはトイレの外にあり、スイッチをオンしてからドアを開けるまでには点灯しているので、実用上はまったく問題がない。
ぶっちゃけ、トイレ用としては、この電球でぜんぜん不満はない。

【LED電球/7W】

LED電球/7W

消費電力は更に下がった。
いわゆるE26口金のソケット取り付ける電球では、はじめてのLED電球。
寿命まで使っていないけれど、白熱電球や電球型蛍光灯より寿命は長いはず。
びっしりと発光素子が付いていて、とても明るいのだけれど、明るいというよりは眩しい。
しかし、見上げて電球を直居することはないので、この電球でぜんぜん不満はない。

【LED電球/12W/PIRセンサー付き】

LED電球/12W/PIRセンサー付き

今回はPIRセンサー付きにしてみた。PIRセンサーとは、いわゆる人勧センサーで、ドアを開けると自動的に点灯し、しばらくすると自動的に消灯する。
十分に明るく、いい感じで動作していて、まったく不満はなかったのだけれど、3年ほど使用したところで、チカチカするようになってしまった。

LED電球のチカチカを修理

一般的に、LED電球の寿命は何十年あると言われているけれど、これまでに購入したLED電球、LED電灯(シーリングライトとか)は、けっこう高い確率で数年でチカチカが始まる。
LED電球を購入した時期は、LED照明が増えてきたころで過渡期であろうから故障もそれなりに多いとは思うのだけれど、過渡期とは言っても、ずんべ がLED電球を購入したのはずいぶん遅く、そこそこ一般的になってからだ。大手家電メーカーでも、5年保証とかを付けだしたころだ。それでも数年で故障するというのは「LEDは長寿命である」というふれこみに疑問を感じる。

加えて、LED電灯だと、チカチカした発光素子だけを交換するわけにはいかず、本体もろとも買い替えになってしまう。エコでもないし、トータルで見て安いとも言えない。
また、うちの場合だと、2台のLED電灯を、ひとつのリモコンで操作する形で使っているので、LED電灯1台が壊れると、自動的に2台の買い替えになってしまう。これは痛い。
普通の蛍光灯と同じく、取り付ける発光素子を規格化して、本体はそのままで、発光素子だけを交換できるように設計してほしいと思うのだが、できないのだろうか。

【ブレード型LED電球/27W/PIRセンサー付き】

ブレード型LED電球/27W/PIRセンサー付き ブレード型LED電球/27W/PIRセンサー付き

もっと明るくしようと、ブレード型のものを選んでみた。
国内でも、AliExpressでも「ブレード型+PIRセンサー付き」という商品はなかなか見つからず、たまたま覗いたTemuで販売されていたので買ってみた。
PIRセンサーはきちんと動作し、これは問題なかったのだけれど、どういうわけか、消灯した後しばらくすると、勝手に点灯し、また勝手に消灯する。つまり、ゆっくり、点滅を繰り返している感じ。
これでは使えないので、この電球の使用はすぐに諦めた。
ちなみに、この電球は、Temu上からすぐに消えた。クレームが多かったんだろうな。

【LED電球/20W/レーダーセンサー付き】

LED電球/20W/レーダーセンサー付き

今回はレーダーセンサー付きにしてみた。レーダーセンサーとは、いわゆる人勧センサーの一種なのだけれど、PIRセンサーは赤外線、レーダーセンサーは電波を使うところが異なる。
実は敢えてレーダーセンサーを選んだわけではなく、選んだ理由はレーダーセンサーの方が安かったから。わずかコンマ数ドルの差なんだけどね。
しかし、レーダーセンサーは、敏感すぎる様だ。トイレのドアを開けなくても反応して点灯してしまう。
あまりにも敏感すぎて、文字通り意味もなく点灯してしまうので、ちょっと使えない。
という事で、この電球の使用もすぐに諦めた。

【LED電球/20W/PIRセンサー付き】

LED電球/20W/PIRセンサー付き

明るくした上で、PIRセンサーのタイプを買い直した。
いい感じで点灯/消灯する。
今はこの電球を使用している。長持ちしますように!

どんだけ電球買うねん。(^^;

しかし、今現在、欲しいLED電球がある。
これ。UFO型。

明るさは申し分なのだけれど、人勧センサー付きが見つからない。
発売されないかな。

■2023/12/06追記
センサー付きを発見!

ちょっと値が張るけど、買ってみるか。

電球のシェード(傘)を作成

このエピソードの続き。

LED電球のチカチカを修理

電球は修理して使えるようにしたのだけれど、この電球、シェード(傘)がない。

トイレの電球

このオフィスに入った時は付いていたように記憶しているけれど、いつのころ買われてしまって取り外し、取り外したままでも特に支障はないので、そのまま放置していた。
しかし、この際なので、シェードを取り付ける事にする。

シェードは、普通に売られていると思うのだけれど、それなりの金額がする。
なんとか安く作れないものかと、100円ショップをプラプラしながら探してみる。
探す…
探す…
探す…
あった!
園芸用の樹脂製の植木鉢だ。
これをシェードに加工してみる。

園芸用の植木鉢

加工は簡単で、底に電球を差し込む穴を開ける。

穴を開ける

開けた穴に電球を通す。

開けた穴に電球を通す

ソケットに取り付ける。
おぉ、いい感じじゃないですか。

点灯!

100円で電球のシェードができました。(^^)

LED電球のチカチカを修理

オフィスのトイレの電球は、何年か前にLED電球に交換している。

トイレの電球

そろそろ3年になるのだけれど、最近、チカチカするようになった。
電球全体がチカチカするのではなく、発光素子のひとつがチカチカしているようだ。
LED電球も安くなったので、買い替えてもいいのだけれど、修理をトライしてみることにする。

チカチカするようになった発光素子を交換するのがいいとは思うのだけれど、交換する発光素子を持っていない。
しまったな、以前にLED電球を廃棄したときに、基板をとっておくんだった。

とりあえず、カバーを取り外してテスターを当ててみる。

テスターを当ててみる

発光素子が1個だけ光った。
どうやらこの電球には、発光素子が並列に接続されている構成らしい。

発光素子

並列なら、チカチカするようになった発光素子を取り除けば、それが光らないだけで、他の発光素子はすべて光るでしょう。

チカチカするようになった発光素子を取り除こうと、はんだごてを当ててみたのだけれど、なかなか取れない。
発光素子の底面の奥底まではんだが付いているようで、熱が伝わらないようだ。
んー、どうするかな。
取り外した発光素子は捨てるだけなので、壊れても構わない。
基板側が壊れなければいいでしょ、という事で、発光素子を破壊して取り除くことにする。
ニッパーでバキバキ!
取れた。

発光素子を取り除いた

この状態でソケットに取り付け点灯させてみる。
うん、取り除いた発光素子以外は光った。

発光素子を取り除いた

元通りにカバーを取り付けて修理完了。

周知完了

これでヨシ!

DeleGate+robots.txtで大ハマリ

DeleGate+robots.txt で大ハマリしたので、メモ。

会社の公開サーバは、複数のサーバをひとつのIPアドレスで公開しているため、内向きの、いわゆるリーバース・プロキシを使って振り分けを行っている。
使用しているプロキシ・サーバは DeleGate

DeleGateは、/robots.txt にアクセスがあった場合、自動的にプロキシ経由のURLを検索エンジンにヒットさせないように、robots.txt の内容を自動的に書き換えて返す。

たとえば、以下のような内容で /robots.txt が置かれていた場合…・

User-agent: *
Disallow: /

DeleGateは、以下の様に自動的に出力を追加する。

User-agent: *
Disallow: /
Disallow: /-_-
Disallow: /=@=

この動作は、/robots.txt が存在しているか否かに関わらず自動的に出力され、/robots.txt が存在しなくても、常に以下の様に出力される。

User-agent: *
Disallow: /-_-
Disallow: /=@=

昨今は、WEBサイトがどんどんSSL化されつつあるが、httpsでアクセスした場合、/robots.txt にどのように記載してあったとしても、すべて捨てられてしまっている事に気付いた。
常に /robots.txt が存在しないものとして、DeleGateの自動出力だけが出力されている。
すなわち、/robots.txt を置いても置かなくても、/robots.txt 1にどのように記述してあっても、常にこのように出力される。

User-agent: *
Disallow: /-_-
Disallow: /=@=

マヂすか。(涙)
まぁ、DeleGateと言えども、SSLで通信されている内容を傍受/復元して「内容を改ざんする」事はできないだろうから、SSLで通信をしている場合は、出力のすべてを置き換えるしか方法がないのだろうな。
もし、傍受/復元が可能だとすると、SSLでて暗号化している意味がない。
確かに、そりゃそうだと思う。

DeleGateが開発された当時は、まだSSLは一般的ではなく、特殊な環境であったと思うので、この動作でも大きな問題ではなかったのだろうけれど、ほとんどのWEBサイトがSSL化されている現在の状況では、この動作はちょっと厳しい。

困ったぞ。
サーバ上のコンテンツはインターネットから見える様にはしているが、検索エンジンにはヒットさせたくない。
そして逆に、このブログを含め、検索エンジンにヒットさせたいコンテンツもある。

DeleGateのマニュアルと読むと、MOUNT のオプションに「robots={no|ok}」という設定は存在しているが、どう設定しても出力は変化しない。
過去に仕事で X-Window のソースと格闘し、死ぬほど苦労した ずんべ としては、正直、こういったソフトウェアのソースコードは覗きたくない。
さりとて、robots.txt が制御できないのも困る。
仕方がない、ソースコードを開いてみることにする。

むむぅ、やっぱり、読むには辛いソースコードだ。
同じ構造体を、異なるソースファイルだと、異なる型で定義されている。
関数の情報はヘッダファイルなどにまとめられておらず、各ソースファイルで必要に応じてという形で記述されている。
マクロだらけで、結局、どういうソースに展開されるのか、ぜんぜんわからない。
各ソースは、それが「クラス」であるかの如く振る舞うような作りになっているように思えるけれど、一貫性がない。

それでも頑張って、追ってみる、追ってみる、追ってみる。
「robots={no|ok}」を参照しているコードはあった。
しかし、その設定が、robots.txt の出力のコードの部分で使われているようには見えない。
やはりこの設定、ぜんぜん機能してないんじゃないか?

さて、どうするか。
設定では対処できそうにないので、ぶっちゃけ、やりたくないけど、プログラムを修正し、この問題を何とかしてみることにする。

修正の方向性はふたつ考えられる。

【方向性1】
robots.txt に出力する機能をオフにできるようにする。
すなわち、この制御をオフにした場合は、他のファイルの出力と同様、/robots.txt も、そのまま出力する。
運用としては、/robots.txt は通常通りコンテンツとして置き、これまで DeleGateが自動出力していた記述を手動で書き込む事にする。
もちろん、この場合、/robots.txt が存在しなければ、他のファイルと同様、404 Not Found になる。
【方向性2】
robots.txt への出力内容を指定/設定できるようにする。
MOUNTのオプションに、公開する/しないの設定を追加し、公開するか否かで「Disallow: /」の出力を決める。

【方向性1】の方が汎用性があるような気がするのだけれど、ざっとソースコードを追う限り、ちょっと面倒な修正になりそうだし、すべてのコンテンツの /robots.txt を書き換え、かつ、過去のコンテンツを復活させる場合も、新しいコンテンツを作る場合も、もれなく /robots.txt を置いていくのはちょっと面倒だ。
と、いう事で、汎用性は狭められてしまうけれど、【方向性2】で行くことにする。

以下の様に修正を行う事にする。

MOUNTのオプションに「sitepub={no|ok}」を追加する。
記述はこんな感じ。

MOUNT="/* https://X.X.X.X/* nvserv=-thru,host=-blog2.zunbe.com,sitepub=ok"

「ok」の場合は「Disallow: /」を出力しない。
「no」の場合は「Disallow: /」を出力する。
設定が無い場合、上記以外の場合は「Disallow: /」を出力する。つまり、デフォルトは非公開。

一応、パッチも公開しておく。

delegate 9.9.13用パッチ

patch httpd.c < httpd.c.patch
patch mount.c < mount.c.patch

ただし、「自分が使えればいいや」レベルでの修正なので、いろいろきちんと作っていない。
使用は自己責任で。

置時計のスタンド

棚の奧から「小田信二 ハットクロック」なる時計が発掘された。
これは、愛車カローラ・フィールダーを購入したときに、ディーラーから貰ったものだと思う。

背面には、壁掛け用のフックを入れるむぞと、置時計用の足を入れる溝がある。
しかしながら、置時計用の足を失くしていて、置時計として建てる事ができない。
がらくた箱をひっくり返せば出てくるかもしれないけれど、作った方が速そうなので、自作する事にする。

(途中経過を笑楽して…(^^;)組み立て完了。

置時計のスタンド

背面の溝に差し込んで立ててみると、こんな感じ。

置時計のスタンド

「木」のままではナンなので、黒に塗装する。

置時計のスタンド 置時計のスタンド

うん、これでいいでしょう。

置時計のスタンド

電卓ケース

電卓ケースを作ってみた。

電卓ケース

高校生の時から使っている、CASIO fx-300P。35年モノ。

CASIO fx-300P

この写真は、もう1台持っている CASIO fx-992V のものだけれど、fx-300Pも、購入した時は、こんなケースが付いていた。

電卓ケース

この fx-992V も購入してから30年経過しており、ケースはヨレヨレなのだけれど、fx-300P は35年が経過しており、メイン使っていた事もあって、いつの頃からか、ケースは失われてしまっている。
それもあってか、電卓本体はキズだらけになってしまい、液晶表示部も小キズがたくさんついてしまっている。

専用のケースを入手する事は難しいと思うけれど、今はスマホ用のケースがたくさん販売されているので、サイズが合うものを探せば、苦も無くケースが手に入るとは思う。しかし、そこはビンボー人ずんべ、自分で作ってみることにした。

カバーの材質は何にしようかと思ったのだけれど、100円ショップで売られているフェイクレザーを使う事にした。
このフェイクレザーは、以前にベルトのバックルをリペアしたときに使ったもの。ベルトのバックルに使って、1年経過しても大丈夫なので、電卓のカバー用としては、耐久性は十分でしょう。

フェイクレザー

ケースの芯材には、何かの商品のを購入した時のパッケージに使われていた透明プラを切って使う事にした。
表紙用、裏表紙用、背表紙用の3枚を切り出す。

ケースの芯材

この透明プラをフェイクレザーの間に挟み込むのだけれど、フェイクレザーの固定をどうするか。
今回は、100円ショップで売られている、「コニシ ボンド 靴底補修用」を使ってみることにした。

コニシ ボンド 靴底補修用

さて、ケースの作成。

透明プラをフェイクレザーに挟み、周囲を接着する。
最終的にフチは切り取るので、フチが後で剥がれない様に、接着剤ははみ出すくらいに塗る。

周囲を接着 周囲を接着

本当は、フチを接着するだけでなく、フチを縫うと、強度も上がり、うまく縫えれば装飾にもなっていいと思うのだけれど、今回は割愛し、接着のみとした。

フチをカットして成形する。

フチをカットして整形

カドを丸く成型する。

カドを丸く成型

電卓は両面テープで固定する事にした。

完成!

完成! 完成!

これでヨシ!
老体 fx-300P には、もうしばらく頑張ってもらいましょう。

関数電卓本体のツメを修理

高校生の時から使っている関数電卓 CASIO fx-300P。
35年以上使っている骨董品だ。(^^)

CASIO fx-300P

35年使っている間に、様々な理由で何度か分解しているのだけれど、電卓本体を「パチッ」ととめているツメが折れてしまい、上部に隙間ができてしまった。

隙間ができてしまった

写真では分かりにくのだけれど、この部分のツメが折れてしまっている。

ツメが折れている

ツメを復活させて、「パチッ」ととめられるように修理してみようと思う。
ツメの部品は、これから作る。プラモデルのランナーだ。

プラモデルのランナー

ランナーの一部を切り出す。

ランナーの一部を切り出す

ライターで炙って引き伸ばし、ちょうどよい太さにプラ棒にする。

ライターで炙って引き伸ばす

引き伸ばしたプラ棒を切り出す。

引き伸ばしたプラ棒を切り出す

この状態で接着すると、接着面が円形で接着力が弱いと考えられるため、更に縦に切り、かまぼこの形状にする。

かまぼこの形状にする かまぼこの形状にする

接着は100円ショップで売られているエポキシ接着剤を使用する。

エポキシ接着剤

かまぼこ型のプラ棒をツメとして接着する。

プラ棒を接着する

接着剤が固まったら、上部を削ぎ落して平面にする。

上部を削ぎ落して平面にする

「パチッ!」 いい音だ。(^^)

完成!

完成!

バッチリだ。
まだまだ現役で頑張ってもらいます!

DBD::mysqlで大ハマリ

DBD::mysqlで大ハマリしたので、メモ。

問題が発生した環境。

① CentOS 7.6
② Apache 2.4.37(自力でビルド)
③ MySQL 5.6.44(自力でビルド)
④ perl 5.16.3
⑤ DBD::mysql 4.050(自力でビルド)

各ソフトウェアは、ひとつのOS上で複数のバージョンを稼働させる必要から、yum や rpm を使わず、基本的に自力でコンパイルして動作環境を構築している。

この環境で、Apache経由でアクセスし、perl から MySQLに 接続したところ、500エラーが発生した。
エラーログを見てみると、以下の様に記録されていた。

/usr/bin/perl: relocation error: /***/local/lib/perl5/auto/DBD/mysql/mysql.so: symbol mysql_options4, version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference

このような組み合わせの環境構築は、これまでに何度も行っているが、はじめて見るエラーだ。
自力でビルドした DBD::mysql の共有ライブラリ(mysql.so)から、自力でビルドした MySQL の共有ライブラリ(libmysqlclient.so.18)にアクセスして、なぜかエラーになっている。どういうことだ?

とりあえず、実行環境を模擬した上で、読み込まれるライブラリを確認してみる。
問題なく読み込まれている。

$ cd /***/local/lib/perl5/auto/DBD/mysql
$ LD_LIBRARY_PATH=/***/local/mysql-5.6.44/lib ldd mysql.so
linux-gate.so.1 => (0xb77a4000)
libmysqlclient.so.18 => /***/local/mysql-5.6.44/lib/libmysqlclient.so.18 (0xb73d6000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb73b4000)
(以下略)

LD_LIBRARY_PATH を指定しなければ、当然「共有ライブラリが見つからない」エラーになるはずだよな、と、念のため LD_LIBRARY_PATH を外して確認してみる。

$ cd /***/local/lib/perl5/auto/DBD/mysql
$ ldd mysql.so
linux-gate.so.1 => (0xb779a000)
libmysqlclient.so.18 => /usr/lib/mysql/libmysqlclient.so.18 (0xb748a000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb746f000)
(以下略)

が... あれ? エラーにならない。
「/usr/lib/mysql/libmysqlclient.so.18」を読み込んでる。何これ?

確認してみると、このファイルは確かに存在している。
このディレクトリに、MySQLのライブラリをインストールした覚えはないのだが...。
これは、CentOSが標準でインストールするものだろうか。

$ cd /usr/lib/mysql
$ ls -l libmysqlclient.so.*
lrwxrwxrwx. 1 root root 24 7月 8 03:21 libmysqlclient.so.18 -> libmysqlclient.so.18.0.0
-rwxr-xr-x. 1 root root 3052044 8月 17 2018 libmysqlclient.so.18.0.0

自力でビルドしたMySQLのライブラリを確認してみる。

$ cd /***/local/mysql-5.6.44/lib
$ ls -l libmysqlclient.so.*
lrwxrwxrwx. 1 root root 24 9月 17 2019 libmysqlclient.so.18 -> libmysqlclient.so.18.1.0
-rwxr-xr-x. 1 root root 7753856 9月 17 2019 libmysqlclient.so.18.1.0

DBD::mysql は「libmysqlclient.so.18」をロードしようとするのだが、コンパイル時に指定した、自力でビルドした MySQL の「libmysqlclient.so.18」に接続できず、標準の「libmysqlclient.so.18」に接続しようとして、エラーになっているようだ。

しかし、「/lib」とか「/usr/lib」とか「/usr/local/lib」とかなら、自動で読み込まれるのはわかるが、「/usr/lib/mysql」が自動で読み込まれるというのは、どういうことなのだろう?
もしかして、/etc/ld.so.conf か?

$ cd /etc/ld.so.conf.d
$ ls
mariadb-i386.conf
$ cat mariadb-i386.conf
/usr/lib/mysql

ビンゴ!
このサーバには mariadb も入れてはいるが、インストールの時に、このファイルを入れた覚えはない。CentOS が勝手に入れているのだろうか。余計な事をしてくれる。

少し古い CentOS の場合、どうなっているのだろう?

$ cd /etc/ld.so.conf.d
$ ls
mysql-i386.conf
$ cat mysql-i386.conf
/usr/lib/mysql

mariadb ではなく、mysql として、同じ設定が入っていた。
では、この「/usr/lib/mysql」には何が入っているのだろうか。

$ cd /usr/lib/mysql
$ ls -l libmysqlclient.so.*
lrwxrwxrwx. 1 root root 24 1月 22 03:45 2014 libmysqlclient.so.16 -> libmysqlclient.so.16.0.0
-rwxr-xr-x. 1 root root 1525312 11月 23 08:19 2013 libmysqlclient.so.16.0.0

「libmysqlclient.so.16」が入っている。
なるほどね、これまでは、バージョンが違っているから、たまたま競合しなかったのかと言う事なのか。

これは困ったぞ、どうするか...。
Apache は、DBD::mysql が共有ライブラリを読み込もうとするとき、/etc/ld.so.conf の設定に従ってしまうので、狙っていない共有ライブラリを読んでしまう。
それならば、Apacheを起動するときに、自力でビルドした MySQL のライブラリを読みに行かせるようにするしかないか。
と、言う事で、Apache の起動時の環境設定を変更する事にする。

# cd /***/local/httpd-2.4.37/bin
# vi envvars

以下の1行を追加。

LD_LIBRARY_PATH="/***/local/mysql-5.6.44/lib:$LD_LIBRARY_PATH"

Apacheを再起動。

# systemctl restart httpd-2.4.37

無事、MySQL に接続できた。
ふぅ...。

眠れなくなる宇宙のはなし

「眠れなくなる宇宙のはなし」を読んだ。



天文学が研究された文明/時代の背景と共に、天文学の進歩、観測技術の進歩の次第が解説されている。
現代の様な観測技術も知識もない状態で、当時の手持ちの技術と知識で最大限工夫して観測し、考え、真実を見つけていく。
現代の我々は、現在の科学技術に頼るあまり、工夫する事を忘れている気がしてならない。反省しなければ。

広告

まとめページ

取得した資格
登った山

広告

サイト内検索

WordPress

最近のコメント

広告

RSS

RSS 記事
RSS コメント
Server offered by
有限会社パテンティックソフトウェア
Profile for zunbe