Ubuntuのウイルス対策ソフト

何も考えずに使うなら、Ubuntu officialが紹介しているClamAVがよさげ。

インストール方法

sudo apt install clamav clamav-daemon

使用例

カレントディレクトリ以下をスキャンする。

sudo clamscan -i -r `pwd`

----------- SCAN SUMMARY -----------
Known viruses: 8659686
Engine version: 0.103.8
Scanned directories: 4499
Scanned files: 38205
Infected files: 0
Data scanned: 2354.98 MB
Data read: 35832.83 MB (ratio 0.07:1)
Time: 195.497 sec (3 m 15 s)
Start Date: 2023:04:01 10:40:58
End Date:   2023:04:01 10:44:14

参考

https://help.ubuntu.com/community/Antivirus

https://help.ubuntu.com/community/ClamAV

puttyでbyobuを使うときの自分用設定

ごくたまにしかしないけど、いつも調べてしまうので記録しておく。

puttyの設定

Terminal -> Keyboard -> The Function keys and keypad: Xterm R6に設定

Connection -> Data -> Login details -> Auto-login username: ログインユーザ名を設定

puttyのカラースキームの設定

https://github.com/AlexAkulov/putty-color-themes

std::priority_queueで自作の型を使う

方法1 operator<()を実装する

以下の例のように、MyClass::operator<()を実装すればOK。

#include <iostream>
#include <queue>

class MyClass {
public:
    MyClass(int num) :
        num_(num)
    {}

    std::string toString() const {
        return std::to_string(num_);
    }

    bool operator<(const MyClass& rhs) const {
        return num_ > rhs.num_;
    }

private:
    int num_;
};

int main() {
    std::priority_queue<MyClass> que;

    que.push(MyClass(3));
    que.push(MyClass(1));
    que.push(MyClass(2));

    std::cout << que.top().toString() << std::endl;
    que.pop();

    std::cout << que.top().toString() << std::endl;
    que.pop();

    std::cout << que.top().toString() << std::endl;
    que.pop();

    return 0;
}

方法2 比較用の型を追加する

自作の型を比較する型(以下の例だと、MyClass::Compare)を追加して、それをstd::priority_queueに渡せばOK。

#include <iostream>
#include <queue>

class MyClass {
public:
    MyClass(int num) :
        num_(num)
    {}

    std::string toString() const {
        return std::to_string(num_);
    }

    struct Compare {
        bool operator()(const MyClass& a, const MyClass& b) const {
            return a.num_ > b.num_;
        }
    };

private:
    int num_;
};

int main() {
    std::priority_queue<MyClass, std::vector<MyClass>, MyClass::Compare> que;

    que.push(MyClass(3));
    que.push(MyClass(1));
    que.push(MyClass(2));

    std::cout << que.top().toString() << std::endl;
    que.pop();

    std::cout << que.top().toString() << std::endl;
    que.pop();

    std::cout << que.top().toString() << std::endl;
    que.pop();

    return 0;
}

実行結果

1
2
3

参考

https://cpprefjp.github.io/reference/queue/priority_queue.html