Ubuntuで突然管理者権限がなくなった時の対処法

Ubuntuさんで普通に作業していたら,いきなりsudoが使えなくなる現象が発生しました.
(hamko is not in the sudoers file. This incident will be reported.)

原因はsudo /usr/sbin/usermod -G fuse hamkoのコマンドの-G.指定したグループにユーザを追加するとともに,他の全てのグループからユーザを削除してしまいます.ユーザをグループに追加するときはsudo adduser user groupを使いましょう.

復旧方法.僕は(2)でやりました.
(1) rootのパスワードが設定されている,もしくは他の管理者権限を持つユーザが存在するなら,そのユーザでsudo passwd userを打てば即刻解決.

(2) 管理者権限が完全になくなっていたら,UbuntuのインストーラのCDのTry Ubuntuを使います.
(a) Try Ubuntuで起動
(b-CD) ターミナルを立ち上げるctrl-shift-nだかctrl-shift-t
(c-CD) sudo su
(d-CD) cat /proc/partitions→Ubuntuの論理パーティッションっぽいものを見つける./dev/sd何とか,という名前になっているはず.
(e-CD) mount /dev/sda何とか /mnt
(f-CD) /mnt/etc/groupをエディタで開いて,sudoを検索して,最後にuserを追加します.
(g-CD) reboot nowを打ちます.
(h-HDD) やってもやらなくても.いざこんなことを起きても大丈夫なように,rootのパスワードを設定しましょう.sudo passwd rootからのパスワード設定.(rootにパスワードを設定しないのが最近のトレンドらしいです.どうなっても知りません.)

書きたいことがない

気分転換にブログを書こうかなぁ、と思ったのだが、全然書きたいことがない。

目玉の初夢のブログを書いた時は、心にもやもやがあって、すらすらと言葉が出てきていた。
後から見返しても、相当な短時間のなぐり書きだったのにも関わらず、まるで熟考の末に生み出されたかのように整理された文章が書けていて驚いた。

当たり前のことだが、何かを書くことは、自分の心の中を文章に近似してoutputすることだと思っている。
ブログをちょくちょく書いて、その時々の自分の気持ちを再確認しよう、という試みも、自分の気持ちの進捗みたいなものがなければ、全く手が動かなかったりする。
だから、タイピングのスピードに頭が追いつかない間だけ、ブログを書き続けるスタンスでいる。そうでなければモチベが湧かず、ブロギングはつまらないルーチンワークとなってしまう。

時にはoutputしたものに引きずられて自分の心が陳腐化する.

僕は今、卒論を急ピッチで書かなければならないらしいのだが、全然書きたくならない。

パズドラメモ

*五右衛門地獄・超地獄攻略

https://www.youtube.com/watch?v=WFlxjETYTSo#start=0:00;end=9:17;cycles=-1;autoreplay=false;showoptions=false

これでもできるけど,僕が想定していたのはこっちだった.
LF ジークフリート S オオクニヌシ キングアワりん キングアワりん エキドナ
1F
水含む4コンボ
→なるべく早く突破

2F
水含む4コンボ
→全スキルため

3F
変換スキル開放,水55攻撃
→5ターン貯め

4F
開幕水変換.
次の攻撃で死ぬ,というところまでひたすら普通に攻撃.
→エキドナ

5F
開幕エキドナ水変換エンハンス
整地
水変換エンハンス

やること。
水ゲリラはきんあわのキング確保のため周回
五右衛門降臨は体力、五右衛門を試す。
月曜午後、木曜午前はきんあわのためのサファリットあつめ。
水曜午前、金曜午後はきんわるのためのアメリットあつめ。
木曜はメガロドラン究極のためのフルーツ集め。
光はタケミナカタに。
火はウルズとマスリンに。
水はきんあわに。
木はスサノオに。
闇は誰でも。

vectorをforでeraseするならiteratorは自己責任

remove_ifはbool func(const T& val)を定義する。 (c.f. sortはbool func(const T& l, const T& r)を定義)
・remove系はeraseの中で!
・forの中でeraseするなら、it++は付けずに、自分でイテレータを管理する。具体的には、if (do_erase()) it = erase(…); else it++;によってイテレータを更新。

#include <hamkoutil.hpp>
bool comp (const int& val) {return val % 2;}
main()
{
    vi a = {1, 2, 3, 4};
    a.erase(a.begin() + 2, a.end());
    print_vector(a);
    // -> 1 2

    vi b = {1, 2, 3, 4};
    b.erase(remove_if(b.begin(), b.end(), comp), b.end()); // removeはeraseの中で使うと良い
    print_vector(b);
    // -> 2 4

    vi c = {1, 2, 3, 4};
    for (auto it = c.begin(); it != c.end();) 
        if (*it % 2)
            it = c.erase(it, it + 1);
        else
            it++;
    // -> 2 4
}