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 にどのように記述してあっても、常にこのように出力される。

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 に接続できた。
ふぅ...。

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

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



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

ペダル用反射板を修理

ペダルに取り付けられている反射板が壊れてしまった。

反射板が壊れた

この反射板はAliexpressで購入した、4個で1ドル程度のものなので、買い換えてもいいのだけれど、そこはビンボー人 ずんべ、修理をトライしてみることにする。

とりあえず、ペダルから反射板とダボを取り外す。

反射板とダボを取り外す

どう修理するか。
図にすると、こんな感じになっている。

修理計画①

ダボと本体に穴を開けて、そこにピンを通して固定したい。
青い部分はピン。

修理計画②

しかしこれだと、本体側の埋め込みが浅く、ここから折れてしまいそうなので、穴を反射板まで貫通させて、深さを確保する事にする。
赤い部分は接着。

修理計画③

まず、挿し込むピンを探す。
がらくた箱をひっくり返してみる。
「棒の袋」に入っている適当なピンを使う。
ピンの写真撮り忘れた。(^^;

がらくた箱 「棒」の袋

さて、工作を開始。
ピンバイスで本体に穴を開ける。

本体に穴を開ける 本体に穴を開ける

反射板は貫通させないように穴を開ける。

反射板に穴を開ける 反射板に穴を開ける

ダボに穴を開ける。
まず細いドリルで下穴を開け、太いドリルに交換して本穴を開ける。

ダボに穴を開ける ダボに穴を開ける

ピンを挿して仮組みしてみる。OKだ。

仮組みしてみる 仮組みしてみる 仮組みしてみる

一旦バラす。

接着剤は、100円ショップで買える、2液混合のエポキシ接着剤。

一旦バラす

本体の穴、ダボの穴に接着剤を塗り込む。

接着剤を塗り込む 接着剤を塗り込む

ピンを通してダボを接着する。

ピンを通してダボを接着する ピンを通してダボを接着する

接着剤が乾いたら、反射板を取り付ける。

反射板を取り付ける 反射板を取り付ける

ペダルに取り付けて、完成!

ペダルに取り付ける

これでヨシ!

リアハブを交換

愛車 GIANT OCR3 の後輪のガタつきが目立つようになってきた。
以前に前輪のハブが故障して交換した事があるのだけれど、今回は後輪のハブを交換してみる。

リアアブを交換

まず、部品を調達する。
今回は、ハブとクイックリリースレバーを交換し、ホイール、スポーク、ニップルは再利用する事にする。
ハブとクイックリリースレバーはAliexpressで調達。

さて、交換作業開始。
クイックリリースレバーを取り外す。

クイックリリースレバーを取り外す

ロッドリングを取り外す。

ロッドリングを取り外す

スプロケットを取り外す。まっ黒だ。(^^;

スプロケットを取り外す

反射板を取り外す。

反射板を取り外す

ニップルレンチを使って、ニップルを緩める。舐めやすいので慎重に回す。
ある程度緩めたら、ホイールの穴からマイナスドライバを挿し込んでニップルを回して取り外す。
いつも思うのだけれど、ニップルの取り外しは、もう少し簡単にならないものかと思う。
ニップルレンチで回すときは舐めてしまいやすいし、ドライバーはマイナスだ。マイナスドライバーを穴に差し込んで、メクラでまさぐって回すのだけれど、マイナスはプラスと違ってカチッと噛まないので、ひじょうに回しにくい。これは改善されないものなのだろうか。

ハブからスポークを取り外す。

取り外したスポークとハブ。まっ黒だ。(^^;

ニップルを緩める ニップルを取り外す

ここまでで取り外した、スプロケット、スポーク、ニップル、ホイール、反射板を磨いてキレイにする。

スプロケット スポーク、ニップル、ホイール

ここからは組み立て。取り外しの逆手順で組み立てる。
新調したハブにスポークを取り付ける。

スポークを取り付ける

取り付け位置を間違えないように、スポークをまとめる。

スポークをまとめる

スポークをホイールに取り付ける。

スポークをホイールに取り付ける

スプロケットを取り付ける。

スプロケットを取り付ける スプロケットを取り付ける

クイックリリースレバーを取り付ける。

クイックリリースレバーを取り付ける

ここからはブレ取り作業。
ずんべ はブレ取り台を持っていないので、自転車本体をブレ取り台の代わりに使う。
自転車をひっくり返して、後輪を取り付け、回してみる。
ホイールが歪んでいるので、ブレーキやフレームに擦れて止まってしまう。

ニップルレンチを使って、スポークを引っ張ったり緩めたりして、根気よくブレを取る。

ブレ取りを行う

ここで、リアハブの場合、スポークの張り方には注意が必要。
リアハブにはスプロケットを取り付ける必要があるため、スプロケット側のスポークの取り付け穴は中央に寄っている。
従って、スポークは左右均等ではなく、図のように「①<②」となる形に調整する必要がある。

リアハブのスポーク

ブレ取りが終わると、軽快に回るようになった。(^^)

タイヤを取り付ける。
今回は、リムテープも交換した。

リムテープ リムテープ

完成!

バッチリだ!

七十歳死亡法案、可決

「七十歳死亡法案、可決」を読んだ。



ご高齢者が全人口の30%を越え、おばすて山ならぬ、70歳死亡法案が可決される。
もうすぐ70歳となり、70歳死亡法によって屠られる一人の高齢者の周りで、嫁(義理の娘)、旦那(息子)、その娘、旦那の兄弟など、登場人物各々の思惑がさまざま交差する。
・介護を押し付けられる形の嫁
・嫁の苦労を顧みない旦那
・嫁の苦労を背負わされそうになったトラウマを持つ娘
・介護はしたくないが遺産は欲しい旦那の兄弟
高齢化社会の日本の現状を凝縮した作品。
いろいろ考えさせられる作品だった。

広告

まとめページ

取得した資格
登った山

広告

サイト内検索

WordPress

最近のコメント

広告

RSS

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