2重ルータで片方のルータ接続のPCからもう片方のルータの設定ページに接続する

無線LANルータ(Buffalo)を買って、すでにあるモデム兼ルータ(NTT)に接続したのだが、NTTに有線で接続しているPCからBuffaloの設定ページに接続できなかった時のメモ。

前提

NTTのネットワーク:192.168.3.0/24
Buffaloのネットワーク:192.168.11.0/24
Buffaloはルータモードで運用

Buffaloを固定アドレスにする

Buffaloのインターネット側のIP、つまりNTTとつながっている側のIPを固定にする。ここでは192.168.11.100にする。この時の設定はBuffaloで無線でつながっているスマホから行った。(NTTのDHCPはこのアドレスを割り当てないようにしておかなければならない)


デフォルトゲートウェイやDNSはNTTのそれを指定する。

Buffaloでインターネットからの接続を許可

Buffaloでインターネット側(NTT側)からのポート80をアクセス許可する。

NTTの静的ルーティングを設定

自動でルーティング設定はしてくれないみたいなので、このままでは有線PCからBuffaloに接続できない。のでNTTで静的ルーティングを設定する。

これで有線PCから192.168.11.1にアクセスすると無線ルータのページに接続できた。

enable_if

enable_ifによりある条件のときだけtemplateを有効にすることができる。逆に言うとtemplateにしたくない条件を無効化することができる。

std::enable_if_t<std::is_convertible_v<T, int>>std::enable_if<std::is_convertible<T, int>::value>::type>と同じことなのでこれについて考える。

全体としての意味はTintに変換できるときだけテンプレートを有効にするということ。

is_convertible<T, int>Tintに変換できるかを判定し、その結果はvalueに格納される。

enable_if<A>Atrueかどうかを判定し、trueならばtypeに型voidを格納する。falseならエラーになる。

よって全体としてTintに変換できない場合はエラーになり、templateのインスタンス化は行われない(コンパイルエラーにはならない(SFINAE))。

この例ではどういうときにこれを使うのかの応用例は示せていないが、特定の型のときだけテンプレートを有効にしたい場合に使う。

typename = としているのはtypename A = などと同じでデフォルトのテンプレート引数の指定、これはテンプレートのインスタンス化をするかどうかだけのために使われるので、コード中では使われないのでこういう記述になっている。

Linuxでtmpディレクトリを変える

一時的に変える

ずっと変える

/etc/environmentファイルに変数TEMPを記述

パーミッションの’t’

もともとの/tmpのパーミッションには’t’がついている。rootだけが削除やリネームできるようにするためだと思われる。

C#のファイルダイアログでアプリケーションを選択させる

アプリケーション(拡張子exe)を選択させる

すべてのファイルから選択させる

ubuntuでocrmypdfを使ってPDFをOCRする

PyMuPDFをインストール

ocrmypdfが使う。

tesseractの日本語をインストール

ocrmypdfをインストール

tesseractの言語がインストールされているかを確認

OCRを実行

まずPDFの言語と縦書きか横書きかを確認する。日本語の縦書きの場合は以下を実行。

複数言語で実行

英語とドイツ語で実行。まずはドイツ語のtesseract-ocrをインストール

エラーのとき

pdfを書き換える。以下のどれか1つ。

エラーは以下のコマンドで起こる

このエラーはmalloc関連らしくgsのソースを見ないとわからないと思う。

Firefox Quantumのブックマークの保存場所

プロファイルフォルダを開く

[Ctrl]+[Win]キーでファイルの実行ダイアログを表示して以下を入力。 ここにあるフォルダのがプロファイル。通常はプロファイルが1つしかないと思うのでフォルダを開く。

bookで検索して対象ファイルを削除

これである程度削除できていると思われる。しかしこれだけじゃ削除されない。

placesで検索して対象ファイルを削除

places.sqliteがブックマークの本体臭いのでこれを削除する。

ST31000524ASのファームウェアのアップデート

注意:これをやると壊れます。

Dellのinspiron-620sというマシンをWindows10で使っていたのだが、それに積んでいるHDDがLED点灯状態になる問題が発生した(普通は点滅する)。この現象に伴ってファイルが読めなくなる(読み込むと固まる)などの問題が発生したため、HDDのファームウェアのアップデートをしてみることにした。

HDDはST31000524ASという型番、検索するとDellでファームウェアのアップデートが提供されていたので実行してみることにした。


圧縮ファイルに含まれる、B7000100.exeというファイルを実行すると、おそらくファームウェアを適用したあとに再起動したのだが、HDDからブートできなくなってしまった。幸いこのマシンにはSSDも積んでいてそこからもブートできるようになっていたので、起動することはでき、HDDの中身も無事みたいだが、HDDが1つしかない場合は、Windowsを再インストールすることになると思う。

SSDからHDDで起動したあとにEasyBCDを使って再びHDDにBCDを書き込んで、HDDからブートできるように戻すことができた。

このソフトはブート時に使ったBCDの情報を表示するようだ。ここでE:\になっているのはシステムで予約済みの領域で、bootやEFIなどのフォルダとbootmgr,BOOTNXTなどのファイルがある。ここにBCDを書き込むことでもとに戻すことができた。

LED点灯問題は今のところ起きていないが、しばらく様子を見ないとわかない。

更新前のファームのバージョンは確認しなかったが、更新後の情報はHWiNFO64でみると以下のようになっていた。

追記

上記のファームウェアアップデートをしても同じ問題が再現したのでファームウェアの問題ではないようだった。その後色々しらべるとSEAGATEからディスク診断修復ツールであるSeaToolsというものがあるとわかったのでこれを試してみることにした。

ベーシックテストでもエラーはでなかったのでHDDにエラーはないものと思われる。

その後いろいろ調べてみると、同じような問題でDVDドライブがおかしくなるとLED点灯が起こるとあったので調べてみると問題が発生しているときはDVDドライブが見えなくなっていることがわかった。起動時から見えないときもあるし、起動してしばらくしてから見えなくなることもある。これが原因かもしれないので更に調査してみようと思う。

コマンドの時間を計測する

Linux

timeコマンドを使う

Windows

powershellのMesure-Commandを使う