このブログを検索

2024/11/29

2進数を10進数に変換

工事担任者試験にはIPアドレスとかルーターとかスイッチとかも試験範囲になっている。Ciscoの資格試験やIPAの試験でも勉強したし実務でも日常的に接しているので第2級デジタルで問われる内容についてはここは自信のある分野である。

2進数を10進数に変換する問題が出てくるのだが、そのビット数は普段利用している8とか32とかではない。

原理としては、2進数を十進数に変換するには、下から1,2,4,8,.... を0or1に掛けて、つまり1になっているbitに2^n を掛けて足せばよい。

しかし、たとえば 11111111 という2進数があったときは、8bitで表現できる最大の値であるから255であり、11101111 であれば、255から16を引けばよい。

過去問を解いていて出てきたのは、9桁の2進数であった。

私は、「2^10が1024だから、それに1たりないから1023か」と考えてしまった。

だが、それで計算した結果が選択肢にないので普通に計算したが違う理由で間違っていた。

なんで間違ったのかなと考え直したところ、9桁の2進数でオール1の値は 2^9 - 1 で511である。10桁だったら1023である。

問題は、9桁のうち0が二つくらいしかなかったので、その位置だけ511から引けばよかった。




2024/11/27

ベースクリッパとピーククリッパの構成と波形の見分け方

工事担任者第2級デジタル通信を受けてみようと思っている。

テキストを読んでいると、ダイオードを使用した波形整形回路というものがでてきた。特定の基準電圧以上または以下の部分を取り出したり取り除いたりするクリッパというものがあり、基準電圧以上を取り出すのをベースクリッパ、基準電圧以下を取り出すのをピーククリッパ(リミッタ)という。

テキストにはクリッパ回路の出力電圧の波形から、どの構成かを識別する問題があった。

わからなかったので、テキストの説明を読み返したが何度読んでもしっくりこない。部分的に理解できても、どういうときにダイオードが導通状態となるのか、導通するしないによって出力電圧がどうなるのか、ということの法則性のようなものがつかめない。

わからないのでネットで検索してみると、工事担任者試験ではないが、平成30年の電検三種の理論の試験第13問についての説明をしている人が何人もいる。

よく出る問題なのか、難問なのか.....


それらの説明、ブログやyoutubeの動画をいろいろ見て、ようやく理解することができた。

(細かいところで怪しい部分はあるが.....)


そして、一通り理解してみると、ある構成を一つ覚えれば、他の構成が容易に導けると思い、まとめてみた。


1.クリッパにはベースクリッパ(BCとする)とピーククリッパ(PCとする)の2種類ある

2.それぞれの構成において並列形と直列形がある

3.さらに、すべての構成において基準電圧が+の場合とー(マイナス)の場合がある


というわけで8通りの構成がある。

波形については、

1.BCはベース(土台)をクリップ(切り取る)→基準電圧以下を取り除く

2.PCはピーク(山)をクリップ(切り取る)→基準電圧以上を取り除く

3.基準電圧がマイナスの場合は、以下・以上が逆になる。


BCの直列、基準電圧がプラスの場合を覚える。

上下に2本の線があり、上の線上にダイオードがあるのが直列、上下の線を結ぶ線上にダイオードがあるのが並列。直列の場合、抵抗が上下を結ぶ線上にあり、並列の場合上の線上にある。そして、上下の線の下方に上側がプラスの電源がある。

BCの直列形の場合、ダイオードは右向き(カソードが出力側)


ベースクリッパ、直列形、基準電圧はプラス


波形は、ベースクリッパなので土台部分が取り除かれる。上側の山が残り、その下が消えて上側の山以外は基準電圧値の直線になる。

ベースクリッパの波形(基準電圧はプラス)


並列回路は、以下で求められる。
1.直列回路の抵抗とダイオードの位置を入れ替える
2.ダイオードは右(出力側)を向いていたら(右側がカソードなら)、上向き、左を向いていたら下向きにする
3.電源の+-は同じ
ベースクリッパ、並列形


波形は直列も並列も同じ。


今度は、BCの直列型をPCに変更する。この場合はダイオードの向きを逆にすればよい。

ピーククリッパ、直列形

BCと同じようにして並列を求める。
ダイオードと抵抗の位置を逆にし、ダイオードは直列形で左向きなので下向きにする。

ピーククリッパ、並列形

波形はピークをクリップするので、山が取り除かれる。取り除いたところは基準電圧の値の直線になる。

ピーククリッパの波形(基準電圧はプラス)



基準電圧がマイナスの場合は、構成ではダイオードの向きと電源の向きを逆にする。

波形は、横軸と入力波形の交点を基準とした点対称の形となる。


BCの直列形(基準電圧はプラス)

BCの直列形(基準電圧はマイナス


BCの並列形(基準電圧はプラス)

BCの並列形(基準電圧はマイナス


BCの出力波形(基準電圧はプラス)

BCの出力波形(基準電圧はマイナス



PCの直列形(基準電圧はプラス)

PCの直列形(基準電圧はマイナス



PCの並列形(基準電圧はプラス)

PCの並列形(基準電圧はマイナス

PCの出力波形(基準電圧はプラス)

PCの出力波形(基準電圧はマイナス



これはど素人ならではなのだろうが、
クリッパ回路の「入力電圧は交流」である、ということに気づくのに時間がかかった。
波形が正弦波なんだからそんなの当たり前だろ、ということなのだろうが。

あと、以下のような疑問も持った。

「ダイオードが導通状態になったとき、入力電圧に基準電圧が足されて出力されないのか?

「交流電圧はプラスになったりマイナスになったりするが、基準電圧による電流とぶつかるようなことにならないのか?」

「抵抗は何のためにあるのか?抵抗がなかったらどうなるのか?」

あと、入力電源が図から省略されているので、出力側も同様に省略されていて導通しているのかと思ったり。



2024/11/19

抵抗の並列接続について

オームの法則というものを中学生で習う。

そして、抵抗の直列接続と並列接続というのを習う。

直列接続時は抵抗値は単純に足せばよいが、並列接続の場合は、

1/R = 1/R1 + 1/R2 

となる、という風にならう。ネットで「抵抗 並列」と検索するとこの式がたくさん出てくる。youtubeでも、動画がたくさん出てくる。

それを見て、そういえばそんなこと習ったな、とは思うのだが、並列接続時にどうしてそんな風になるのかな、というのを疑問に感じた。

感覚的に把握しにくいというか。もっというと、「本当にそうなのか?」という感じ。納得できないというか、腹落ちしないというか。

工事担任者試験(デジタル2級から)を受けてみようかなと思い、テキストを読んでいたら出てきて、ん?となった。

最近、簡単な電子工作をやっている。ラジオを作ったり、ラズパイやarduinoでLチカみたいなことをやってみたり。その時に「抵抗」というものは当たり前のように出てくるが、自分で抵抗値を計算することはない。


抵抗とは何か?

テキストには、「抵抗とは自由電子が導体の分子から受ける摩擦抵抗である」と書いてあった。

抵抗というのは日常的に使う言葉、概念で、人間が何かをするときに妨げとなるもの、という意味で使う。

それで考えると、直列の抵抗というのは、ある人が旅行に行こうと思ったがAさんに反対され、Aさんを説得したら今度はBさんに反対されてBさんも説得した。その時に労力を費やす必要になった抗う力になる。これは(Aさんの抵抗値)+(Bさんの抵抗値)でよいだろう。

並列の抵抗は、AさんとBさんを同時に説得する場合だ。この場合も抵抗値は直列と同じように2人の抵抗値の合計になりそうなものだが、電気回路ではそうならない。


電気回路の場合、電圧と電流を考える。

オームの法則は E=IR であると習う。

それは、R=E/I、I=E/R とも言える。

しかし、このE(電圧)、I(電流)、R(抵抗)の三者は、数式の文字のように本当に交換可能なものなのだろうか?

三者について、どんなものかのイメージは湧く。電圧は電気の強さのようなもの、電流は流れる電気の量、抵抗は電流に逆らう強さ。

E=IR であるなら、流れる電流と抵抗があったときに、そこから電圧が生成されるのか?

そうではなく、電圧があるから電流が発生し、抵抗があるからその電流の量がそれに応じて変化するのだ。

R=E/I を考えるときにも、電圧の値と電流の値があり、そこから抵抗が形成されるのではなく、抵抗が初めに存在していて、そこに電圧がかかるから抵抗に応じた電流が発生し、電圧と電流の値がわかれば抵抗値がわかる、ということである。

抵抗を2つ並列に接続した場合、回路は2つに分岐する。このとき、電流の総和は分岐した2つの回路にながれる電流の和となる。

2つの抵抗の値が同じであれば電流は全体の半分ずつとなる。

では、電圧はどうか?2つの抵抗値が同じであれば、電圧も半分ずつになるのか?

結論はわかっていて、2つの抵抗にかかる電圧は等しいがその電圧は全体にかかる電圧と等しい。つまり、10Vの電圧をかけるとR1にもR2にも10Vの電圧がかかる。

直列の場合は、2つの抵抗値にかかる電圧は等しくない。


ここまで考えてくると、「電圧」「電流」「抵抗」というものが、単純な「電気の強さ」「電気の量」「電気に逆らう力の強さ」みたいには置き換えられないことがわかる。

もし電圧が単なる「強さ」であるなら、並行に存在している抵抗に対して同じ強さでかかることはありえない。半分ずつになるはずだ。

そして、この「並列抵抗には同じ強さの電圧がかかる」ということから、抵抗値が求められる。というか、このことが前提されないと抵抗値が、電流値が求められない。

10Ωの抵抗が二つ並列に存在する回路に10Vの電圧をかける。

I1=10(V)/10(Ω) = 1(A)
I2=10(V)/10(Ω) = 1(A)

電流を合計すると2Aである。

ということは、抵抗の合計は R=10(V)/2(A)=5となる。

1/R=1/R1+1/R2 を計算すると

1/R = 1/10 + 1/10 
=2/10=1/5

1/R=1/5

R=5 
となる。


I=E/R
I1=E/R1
I2=E/R2

I=I1+I2

E/R=E/R1+E/R2
両辺をEで割って
1/R=1/R1+1/R2


ここまで考えて計算してみて、ようやく「1/R=1/R1+1/R2」が腹に落ちる。

つまり、抵抗が並列にされたときにどれだけの電流が流れるか、回路全体の抵抗の和はどうなるか、というのは、「抵抗が並列に接続されたときにそれぞれの抵抗にかかる電圧はどうなるか」ということを言っているのである。

そして、二つの抵抗にかかる電圧から電流値を求め、その二つの電流値を足して、
その和をオームの法則にあてはめて全体の抵抗値を出しているのである。



・・・

でも、同じ電圧をかけて、2つの同じ抵抗値がその回路に存在しているのは同じなのに、流れる電流の量が変わるというのはやっぱり受け入れがたい・・・・。

(参考)









2024/11/15

raspi zero2その後

動作が不安定である。というか、止まる。sshできなくなる。pingも通らなかったかな?

なんか重いのだろうか?os(bookworm)をliteで入れなおす。

まっさらな場合、libcamerifyのためには以下が必要

libcamera-tools
libcamera-v4l2


2024/11/13

iPhoneのアップデートに失敗、復元もできなくなる

家で仕事をしていて暇なのでiPhoneのアップデートをした。普段はだいたい家のWifi経由でやっているのだが、CDをiTunesライブラリに追加してそれと同期させるために久しぶりにiTuneにつないだらアップデートがあると表示されたのでついでにやっておこうと思った。

ダウンロードに結構時間がかかっていて、別のことをして放っておいた。しばらくたってアップデートが始まり、iPhoneの画面が黒い背景に白いリンゴと進行を示す白い横線になった。

が、横線が数ミリくらい進んだ状態で止まってしまった。

どれくらいの時間がたったかは定かではないが20分くらい止まったままだったと思う。

どう見ても進んでいないので強制的に電源を落としリカバリモードで起動しアップデートを再実行しようとしたができない。仕方がないので「復元」を選ぶがそれもできない。

何度か試してダメなので、とりあえずもう一台あるiPhoneにSIMを差し替えた。apple idを変えたりlineやpaypayが入ってないので入れたりいろいろやって1時間くらいかかる。とりあえず「ケータイがなくて困る」という事態はなんとかなった。

アップデートに失敗したiPhoneも、そう簡単に壊れないだろうと再度復元を試みる。調べると、MS StoreからダウンロードしたiTunesで失敗することがあるという情報があった。appleサイトからダウンロードしたものを使えばうまくいく、とある。

appleのサイトにもMS Storeのリンクがあるが、「ほかのバージョンをお探しですか?」のリンクからstore経由でなくダウンロードできる。(本当に違うものなのか確かめていないが)

iTunesを入れなおすと、失敗していた復元が進むようになった。

が、途中で失敗する。

lightningケーブルを変えたり、接続するUSBポートを変えたりいろいろやるがどうしてもうまくいかない。

appleに問い合わせると、appleデバイスというソフトがあるのでそれでやってみてというのでやってみたがiTunesと同じような状態。

「別のPCにつないでなおった」「macにつないでなおった」などの情報があったので別のノートPCにiTunesやappleデバイスを入れてやってみるが、同じ。

Lightningケーブルを変えると、止まる場所が多少変わったりするが、途中で失敗するのは同じ。

失敗したときに表示されたメッセージで検索してみるが、参考になる解決方法は見つからない。サポートに伝えてもそのメッセージはアップルが公開していない、と言う。


iPhoneはリセットすると通常通り起動せず、「リカバリモード」と呼ばれるらしい、黒い背景にライトニングケーブルとノートPCの絵が描かれた画面が表示されて止まる。

機種は13 miniで、iOS 18.1 にしようとして失敗した。上げる前のバージョンがなんだったか覚えていないが、18系だったはず。

リカバリモードでPCにつなぐとiTunesで認識され、「アップデートまたは復元してください、アップデートならデータは残るが復元だと初期化される」というようなメッセージが表示され、アップデートしてみるとすぐ失敗し、復元してみると更新が始まるがリンゴマークが表示され下に進行度を示す白い線が出るが止まる。


表示されたメッセージは以下のようなもの。

iPhone "iPhone"をアップデートできませんでした。不明なエラーが発生しました(75)。067E.004B

iPhone "iPhone"を復元できませんでした。不明なエラーが発生しました(1109)。0634.0000

iPhone "iPhone"を復元できませんでした。不明なエラーが発生しました(53)。


一番惜しいパターンは、appleデバイスを使って、純正ケーブルでつないで復元したときで、
進捗の線がちょうど真ん中あたりで止まり、appleデバイス側のメッセージが「更新しています」から「確認しています」みたいなメッセージに変わってしばらくたって、53のエラーになる。

これを見ていると復元自体はしているがなんらかのチェックがうまくいかず正常終了とみなされない、みたいな感じに見える。まだ新しいし、濡らしたことはないし落としたことはあることはあるがケースをつけていてそんなに激しい衝撃を与えたことはない。ハードウェア的に破損しているようには思えない。

appleサポートにappleデバイスでやってもダメでメッセージ内容を伝えると店舗に持ち込んで見てもらうように言われる。

予約状況を見るとすぐにはできず、送る場合はさらに日数がかかる。そんな重症とは思えず、ちょっとしたことで治りそうだと思うので、appleではない一般の修理店を探してみる。ここならなおしてもらえそうかなという店があって、費用は1.5万くらい。電話してみると治るかどうかはやってみないとわからないし、費用ももっとかかる場合もある、という。ただ、その日の夜に持ち込めるということなのでとりあえず予約した。

その後も復元にトライし続け、調べていくうちにDFUモードというものがあることを知る。リカバリモードと似ているが、appleが公式には公開していないモードらしく、とにかく強制的にファームウェアを書き換えるようなモードらしい。

DFUモードへの切り替え方を説明している人は何人かいて、タイミングが少し微妙なのだが何度か入ることができ、試したが通常の復元とほとんど変わらない状況だった。

最後に、「修復ソフト」の使用を検討した。この問題について調べているときに、ずっと修復ソフトの情報が出てきてはいたが、どうも怪しく、信用できないので避けていたのだが万策尽きたので試してみることにした。

まず、広告しか出てこないものは避ける。一般のユーザーがレビューしたりブログや信用できるサイトで紹介しているようなものを探し、なかなかなかったが比較的信用できそうだったのが iMyFone Fixppo である。

一応無料で使用できるとなっているが、他のソフトも同様なのだが、無料で実施できることはごくわずかで、それで修復することはできなかった。

仕方なく5000円弱の料金を払って、名前は忘れたがアドバンストモードだかなんだかを実施すると、「Apple Mobile Device Serviceのドライバが壊れている」みたいなメッセージが表示されてそのドライバを修復するような動作がおこなわれた後、復元できるようになった。

ということはiPhone本体ではなく、PC側(ソフト)の問題だったということか。

とりあえず治ったのでよいが、PC側の問題が違うPCでも起きていたとすると、もはやそれは破損とか故障とかではなくて「不具合」ではないだろうか?

もしかしたら下記とかをやっていれば治っていたのかもしれない。

あるいは、Macにつないだら治っていたとか。MacはUSB-Cしかインターフェースがなく、iPhoneをつなげられなかったので試せなかったのだが。

ショップの予約はキャンセルした。

2024/11/08

さくらのVPSのパケットフィルタ

さくらのVPSでsquidを設定してあったので、使ってみようと思ったのだが、使えない。

クライアントで プロキシ設定してもサーバに到達しない。firewalldやssやtcpdumpやnmapで確認する限り、どう考えてもサーバの前で止まっている。

ssで表示される、listenしているポートはすべて利用可能でsquidだけが通らない。

さくらインターネットが止めてるんじゃないか?サポートに問い合わせてみようか、と思って思い出した。さくらインターネットがパケットフィルタを提供していることを。

以前、こんなのfirewalldでやるからいらない、と無効にしたと思っていたのだが、見たら動いていて、自分が使っているポートが許可されていてsquidだけが空いてなかった。

 

2024/11/07

fail2ban

以前から気にはなっていたのだが、メールサーバに大量の不正アクセス(ブルートフォースアタック)がある。アドレスはまちまちでアカウント名をテキトーに変えてアクセスしてくる。ログインに成功したり不正なメールリレーしてしまったことは多分ないと思うし、特にサーバに負荷がかかっているとかいういこともないので放っておいたのだが、fail2banを使ってみた。

/etc/fail2ban/jail.conf にいろんなサービスの定義が書いてある。

jail.localというファイルを作って、監視したいサービスだけを書くと、その部分だけ設定を上書きしてくれる。
私は以下のようにした。(centos)

[DEFAULT]
ignoreip = xxx.xxx.xxx.xxx/32
bantime  = 1w
findtime  = 1h
maxretry = 3
backend = auto

filter = %(__name__)s

#
# ACTIONS
#
destemail = hoge@example.com
banaction = firewallcmd-ipset
banaction_allports = firewallcmd-allports
action = %(action_mwl)s
#
# JAILS
#
#
# SSH servers
#
[sshd]
enabled = true

[postfix-sasl]
enabled = true

[cyrus-imap]
enabled = true

[postfix]
enabled = true

ignoreipは、監視対象外とするIPアドレス
1時間以内に3回の不正アクセスがあると1週間バンする。

バンアクションのところは、ubuntuだったらufw、とかに書き換える。

バンが発生するとログが記録されるが、destemailに書いたアドレス宛にメールが送信される。
action_mwl というのは、アドレスと、whois情報と、ログ情報がメールに記載される。

私はwhoisをインストールしておらず、メールに「whoisがない」と書いてあったのでインストールしたらwhois情報が載るようになった。