Author Archives: admin

std::vectorのソート

アンドロイドのヤフオクアプリで「一時的にアプリケーションがご利用できません」と表示される。

直し方1

ログインしなおす。
ヤフオクアプリを開いて下に表示されるバーのその他を選び、ユーザー名をタップしてからログアウトする。

直し方2

「開発者向けオプション」が有効になっていると、このエラーが出ることがあるので無効にする。

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にアクセスすると無線ルータのページに接続できた。

content_shellとchrome

## どこでWidgetが作られるか
### content_shell
ShellBrowserMainParts::PreMainMessageLoopRunで作られる。Shell::CreateNewWindowでShellがつくられる。
### chrome
ChromeBrowserMainParts::PreMainMessageLoopRunImpl()でつくられる。BrowserFrameはWidgetを継承。

## どこでViewはつくられるか
### content_shell
ShellWindowDelegateView::InitShellWindow()
ShellWindowDelegateViewはWidget::InitParamのdelegate渡される
### chrome
BrowserViewやToolbarView::Init()

## ボタンのメッセージハンドラ
### content_shell
Shellがもつ
### chrome
chrome::BrowserCommandControllerがもつ
BrowserCommandController::ExecuteCommandWithDisposition

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のソースを見ないとわからないと思う。