ssh接続先のサーバーにKiteをインストールしてvimで使う
はじめに
Kiteをインストールする方法はKite公式ページやQiitaの記事などに書いてあるけど,sshで接続するサーバーにインストールしてvimで使えるようにする方法はどこにもなかったのでここに残しておこうかと.
X窓を転送すればGUIでインストールできると思ったけど,僕の環境ではできなかったので以下の方法でインストールした.
導入手順
# Kiteのインストール $ bash -c "$(wget -q -O - https://linux.kite.com/dls/linux/current)" # vim用プラグインのインストール $ mkdir -p ~/.vim/pack/kite/start/kite $ git clone https://github.com/kiteco/vim-plugin.git ~/.vim/pack/kite/start/kite/ # Neovimの場合 $ mkdir -p ~/.config/nvim/pack/kite/start/kite $ git clone https://github.com/kiteco/vim-plugin.git ~/.config/nvim/pack/kite/start/kite/
おわり
Ubuntu18.04から20.04にアップグレードするとログイン画面が表示されなくなった
はじめに
Ubuntu18.04LTSから20.04LTSにアップグレードしました.
まぁバグがあるやろなと思ってはいたんですが,電源を入れても黒い画面しか表示されずログインすらできなくなってしまったので解決策を備忘録として残しておきます.
解決策
CUDAが原因でした.
僕はこのPCで以前から深層学習を行ったりしていたので,CUDAが入っていないとは思ってもいませんでいした.
まぁCUDAを入れ直して解決できたので以下にその方法を順序立てて記します.
1. リカバリーモードの起動
普通に起動しようとすると黒い画面(なんかところどころ変な模様ありますが...)しか表示されません.
そこでリカバリーモードで起動します.
まず普通に電源をつけます.
ロゴが表示された(私の場合はTSUKUMOで購入したBTOなので「TSUKUMO」と表示されます)ときに,SHIFTキーを長押しすることでブートローダ(GNU GRUBだと思います)の画面を表示させることが出来ます.
ちなみに,ぐぐると人によってはESCキーを連打だったり長押しだったりします.
それぞれ試してみてください.
どれかで行けるはずです.
GRUBの画面が表示されたら「Advanced options for Ubuntu」を選択します.
すると,起動可能なLinuxカーネル名の後ろに「(recovery mode)」と記載されているものがあるのでこれを選択します.
カーネルのバージョンは複数あると思いますが,最新のものを選んでおけば無難かと思います.
これでリカバリーモードでの起動が完了です.
2. CUDAのインストール
リカバリーモードで起動した後,ターミナルを立ち上げます.
試しにnvidia-smiコマンドを打ってみて,もしそんなコマンドないよと言われたらCUDAをインストールすれば解決できます.
もしGPUに関する情報が出力されたらCUDAが原因でないとおそらく思われる($ ls /user/local/cuda* で確認してみてください)ので,このページをそっと閉じてください.
ちなみに,僕の場合は今までインストールしたCUDAのディレクトリの中身がほとんど消えていました...
で,CUDAのインストール方法ですが,こちらのNvidiaの公式ページから行うのが最善だと思います.
ここに記されているコマンドをコピペすれば無事にインストールできます.
時間はまぁ5分位だと思います.
3. .bashrcへの記述
僕はbashを使っているので.bashrcに書きますが,もしログインシェルをzshやfishなどを使っている人たちはそっちの設定ファイルに書いてください.
ここではbashの場合を紹介します.
vimでも何でもいいので,.bashrcを開いてください.
今まで使用していたCUDAのパスが残っていると思います.
例えば以下のような感じです.
export PATH="/usr/local/cuda-10.2/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH"
これを先程インストールしたCUDAのものに書き換えます.
export PATH="/usr/local/cuda-11.0/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH"
保存してsourceコマンドで.bashrcを読み込ませます.
これでnvidia-smiが適切に動作すれば成功です.
終わりに
この後にPCの再起動をすれば問題なく動いてくれました.
Linuxの気持ちが少しわかるようになった気がしました.(笑)
macのvimでヤンクができない時の対処法
はじめに
いつもは自宅のデスクトップを使っているのですが,急遽帰省したのでMacBookProで作業する必要がありました.
そこでデスクトップの.vimrcをmacにscpでコピーして使おうとしたところ,ヤンクが正しく動作しなかったのでその対処法になります.
症状
いつもはShift+vで行全体をビジュアルモードで選択してyでヤンクする,ということを僕はよくやります.
この時に,「選択はできるものの正しくヤンクされず,pで貼り付けようとするとクリップボードの中身が貼り付けられてしまう」ということが起きました.
つまり,「ヤンクの内容がレジスタに反映されないが,ただしクリップボード との連携はできている」ということです.
解決法
もともと僕の.vimrcには以下の記述がありました.
set clipboard=unnamedplus
clipboardオプションにunnamedplusを設定するとLinuxでクリップボードとの連携をすることが可能になります(もちろんvimがclipboardに対応していることが前提ですが).
ちなみに対応しているかどうかは,
$ vim --version | grep clipboard
で+clipboard(対応している)となっているか-clipboard(対応していない)となっているかで確認できます.
で,これを以下のように変更しました.
set clipboard=unnamedplus set clipboard+=unnamed
これにより,unnamedplusの後ろにunnamedが追加されます.
通常,Linuxではunnamedplusは「Ctrl+vでのペースト」に,unnamedは「中クリックでのペースト」に対応することになります.
Macでの挙動は詳しく調べていないのでわかりませんが,上のようにすると「Ctrl+vでペーストが可能かつヤンクがレジスタにしっかりと反映される」というような想定していた挙動ができるようになりました.
終わりに
あくまでも応急処置を忘れないように書き起こした記事になります.
しっかりと原理を理解したければ,上の内容を鑑みた上で自分で調べてみてください.
一助になれば嬉しいです.
RNNとLSTMの解説サイトの備忘録
RNN,LSTMについてしっかりと勉強したいと思ったので参考になったサイトをグループ分けして残しておきます. ちなみに目的は株やfxの予測です.
原理の解説
有名なQiitaの記事.一通り読めばだいたい理解できる.
qiita.com
teacher forcing
teacher forcingとその派生まで
satopirka.com
実装関連
PyTorchのnn.LSTMのページ.見れば使い方がだいたいわかる.
pytorch.org
PyTorchでfxの予測モデルを作成している.ナマの波形を予測しているわけではなく,一日後に上がるか下がるかを予測していて面白い.テストでは一年間で+3%になる結果.
qiita.com
PyTorchで日経平均の予測.寄せ集め感がすごいが,参考にしているいろいろなリンクに飛べるので調べものをするには都合がいい.
qiita.com
正直内容は微妙ですが,時系列データを実際に使ってやっていたのでモデル構築や学習の参考にしました.
hilinker.hatenablog.com
Ubuntu18.04LTS初期設定メモ
はじめに
先日、ツクモのBTOでデスクトップPCを購入したので初期設定で行ったことや参考にしたサイトを備忘録としてまとめようと思います。
初めてのデスクトップPCなので色々拙いところがあると思います。その際はぜひご指摘いただけると幸いです。
詳しい解説は結構リンク移動先に任せます。笑
※まだ少し書き途中です。温かい目で見てください汗
- はじめに
- 環境
- Ubuntuをインストールする
- ホームディレクトリ以下のディレクトリ群を英語化する
- MacOS風にする
- Gnome Shell Extensionsをインストールする
- system-monitor
- メールの設定をする
- デバイスの設定をする
- キーボード周りの設定をする
- セキュリティの設定をする
- 遠隔操作の設定をする
- Texの環境を作る
- エディタの設定/インストールをする
- アプリケーション/ソフトウェアをインストールする
- 細かい設定をする
- 最後に
環境
OS : Ubuntu 18.04 LTS 日本語Remix (出荷時はなし)
CPU : Intel Core i7-9700K
GPU : NVIDIA GeForce RTX 2080 Ti
容量 : SSD1TB + HDD2TB
メモリ : 16GB
キーボード配列 : US
Ubuntuをインストールする
インストールの一連の流れはこちらを参考にしました。
ISOイメージファイルのリンクやライブUSB作成方法(windowsのみ)なども記されています。
linuxfan.info
現在の最新版は20.04LTSですが最初は色々とバグが多いので18.04LTSに、それと日本語の設定諸々が面倒くさかったので日本語Remix版にしました。
僕はラップトップはmacを使っているので、ライブUSBの作成はこちらを参考にしました。 qiita.com
またUS配列のキーボードを使用したい場合は、「キーボードレイアウトの選択」で「日本語」ではなく「英語(US)」を選択する必要があります。
(「キーボードレイアウトを検出」に任せれば大丈夫だと思いますが)
あと、ログイン画面が出た後にパスワードを打ってEnterを押すとフリーズするバグに当たったので修正しました。
以下のサイトを参考にしたところ改善されました。
linuxfan.info
ホームディレクトリ以下のディレクトリ群を英語化する
日本語Remixは最初から日本語環境になっていてすごく便利なんですが、 ホームディレクトリ以下のディレクトリ群が日本語になっています。 CUIからのファイル操作やパスの記述にはすごく不便なので英語化する必要があります。
$ LANG=C xdg-user-dirs-gtk-update # うまく行かない場合は # $ LC_ALL=C xdg-user-dirs-gtk-update
単純に英語化するだけでなく、カスタムしたい場合はこちらを参照すればいいと思います。
XDG ユーザーディレクトリ - ArchWiki
MacOS風にする
僕はノートPCはMacを使用しているので似せたくなりました。
以下の3つのサイトを参考にしました。
hermemo.com
sometrouble.hatenablog.com
www.virment.com
ただ、この中でmac風のフォントのインストールと、launchpadのパチもんのslingscoldは結局使いませんでした。
あまり使い物にならなかったので。笑
また、Dockに関してはGnome shellの拡張機能である「Dash to Dock」のほうがカスタマイズの自由度が高くいい感じになったので、plankも使いませんでいた。
カスタマイズがめんどくさいという人にはplankはおすすめです。
Gnome Shell Extensionsをインストールする
18.04からはデスクトップ環境がUnityからGnomeに変わりました。
そこで、拡張機能を用いてデスクトップを使いやすくします。
インストールなどはこちらのサイトを参考にしました。
linuxfan.info
上の記事には明確な記載がないのですが、$ sudo apt install gnome-tweaks
でGnome Tweaksのインストールをする必要があります。
次に以下に僕が導入した拡張機能の中で良かったものを挙げてみます。
Extensions
Extensions - GNOME Shell Extensions
トップバーから拡張機能のオン/オフを設定することができるようになります。
Coverflow Alt-Tab
Coverflow Alt-Tab - GNOME Shell Extensions
Alt+Tabで3D的にウインドウを移動することができるようになります。
※僕はウインドウが無限ループに陥ることが数回あったので現在(公開時)は使っていません。
Dash to Dock
Dash to Dock - GNOME Shell Extensions
Dockを詳細に設定することができます。
Native Window Placement
Native Window Placement - GNOME Shell Extensions
ウインドウ一覧表示時に、それぞれのウインドウが重ならないようにしてくれます。
Night Light Slider
Night Light Slider - GNOME Shell Extensions
トップバーからスライダーを用いて画面の暖色度合いを調節できます。
OpenWeather
OpenWeather - GNOME Shell Extensions
トップバーから天気予報を確認することができます。
system-monitor
system-monitor - GNOME Shell Extensions
トップバーに各デバイスの使用状況や温度などを詳細に表示できます。
ただ、いくつかの数値表示がNaNになるバグが修正されていないので自分で修正する必要があります。
以下のissueを参考にしました。
github.com
僕の環境では、温度とファンの回転数の他にクロック周波数もNaNになっていたので合わせて修正しました。
$ vim ~/.local/share/gnome-shell/extensions/system-monitor@paradoxxx.zero.gmail.com/extension.js - total_frequency += parseInt(ByteArray.toString(as_r[1])); + total_frequency += parseInt(as_r[1]); - this.temperature = Math.round(parseInt(ByteArray.toString(as_r[1])) / 1000); + this.temperature = Math.round(parseInt(as_r[1]) / 1000); - this.rpm = parseInt(ByteArray.toString(as_r[1])); + this.rpm = parseInt(as_r[1]);
メールの設定をする
何か不具合が出たときにメールでその情報を確認できるようメールの設定を行いました。
rootメールをユーザアドレスに転送する
例えば、root権限で実行される/etc/crontabは/var/mail/spool/rootに、ユーザ権限で実行される/var/spool/cron/crontab/[ユーザ名]は/var/mail/spool/[ユーザ名]にメールを送出します。
これらをまとめて管理できたほうが便利かなと思ったので、rootメールをユーザ名のメールに転送するようにしました。
sendmailは難しいという話を聞いたので、MTAとしてはPostfixを使用しました。
$ sudo apt install mailutils postfix
でインストールできます。(mailutilsはmailコマンドを用いたテストに必要なのでインストールしました)
まずPostfix自体の設定を行います。
Postfixの設定ファイルは/etc/postfix/main.cfなのですが、最初は存在しないので$ sudo cp /etc/postfix/main.cf{.proto,}
でコピーします。
このファイルに記述されているパラメータを僕は以下のように設定しました。
もしコメントアウトされている場合はアンコメントする必要があります。
またこれ以外は変更する必要はないと思うので、未設定の箇所はコメントアウトします。
- home_mailbox :
ホームディレクトリからのmboxもしくはMaildir形式のメールボックスファイル / ディレクトリの相対パスを指定します。
僕はMaildir形式が良かったのでhome_mailbox = Mail/(/でディレクトリになる)
としました。
変更した場合は、ログインシェルの設定ファイルにexport MAIL=$HOME/[home_mailboxで指定した値]
と追記します。
これで/home/[ユーザ名]/Mail/にメールが届きます。 - mydestination :
ローカルで受信するドメインのリストを指定します。
僕は$ hostname
で確認できるマシンのホスト名と、それにmydomainパラメータを連結した値をmydestination = [マシンのホスト名], [マシンのホスト名].$mydomain
のように設定しました。 - setgid_group :
set-gid Postfixコマンドおよびグループ書き込み可能なPostfix ディレクトリを所有するグループです。
変更したら$ sudo postfix set-permissions
を実行する必要があります。
僕は/etc/groupsにpostdropがあったので、setgid_group = postdrop
とデフォルトのまま指定しました。 - sendmail_path :
sendmailコマンドの絶対パスを設定します。
$ which sendmail
で確認できます。
これはPostfixメールキューにメールを投函するのに使用されます。
僕はsendmail_path = /usr/sbin/sendmail
となりました。 - mailq_path :
mailqコマンドの絶対パスを設定します。
$ which mailq
で確認できます。
これはPostfixメールキューをリストアップするのに使用されます。
僕はmailq_path = /usr/bin/mailq
となりました。 - newaliases_path :
newaliasesコマンドの絶対パスを設定します。
$ which newaliases
で確認できます。
このコマンドはは/etc/aliasesからデータベースを構築するのに使用されます。
僕はnewaliases = /usr/bin/newaliases
となりました。
ちなみに、これらのパラメータやその他のパラメータの詳細はPostfix設定パラメータで確認できます。
以上でPostfix自体の設定は終わりですが、おそらくsetgid_groupのパラメータを設定したと思うので、忘れずに$ sudo postfix set-permissions
を実行します。
そして最後に$ sudo service postfix start(2回目移行はrestart)
で起動します。
これでメールが使用できるようになったはずです。
以下のコマンドでメールが確認できれば完了です。
$ echo test | mail [ユーザ名] $ mail
ちなみに失敗した場合は、mailが届かないもしくはメール配送デーモンから送信失敗のメールが届くので設定を見直す必要があります。
次にPostfixのエイリアス機能の設定をします。
これを設定することであるユーザ宛のメールを他のユーザに転送することができます。
ここではroot宛のメールを自分のユーザアカウントのアドレスに転送するよう設定します。
まずエイリアスの設定ファイルである/etc/aliasesの最終行に以下のように追記します。
$ sudo vim /etc/aliases root: [ユーザ名] (←追記)
その後、$ sudo newaliases
でデータベースファイル(/etc/aliases.db)に反映します。
これでrootメールがユーザアドレスに転送されるようになったはずです。
以下のコマンドでrootメールをユーザのメール同様に見ることができれば終了です。
$ echo test | mail root $ mail
定期的にGmailに転送する(未)
デバイスの設定をする
ドライブの設定をする
HDDのマウントをする
どうやらubuntuインストール時の「インストールの種類」において設定できるようですが、
僕はやり忘れたのでインストール後にマウントしました。
partedコマンドを使ってパーティションを作成するにあたり、まずパーティションテーブルをGPTに設定します(後述のgpartedを用いる方法でもこの操作は必須です)。
# sudo parted [デバイス名] $ sudo parted /dev/sdb (parted) mklabel gpt
確認すると以下のようになります。
(parted) print モデル: ATA WDC WD20EZAZ-00G (scsi) ディスク /dev/sdb: 2000GB セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: gpt ディスクフラグ: 番号 開始 終了 サイズ ファイルシステム 名前 フラグ
次にパーティションを切ります。僕はファイルシステムはSSDと同じくext4にしました。
(使用できるファイルシステムの一覧は$ ls /sbin/mkfs.*
で確認できます。)
(parted) mkpart primary ext4 0% 100% (parted) print モデル: ATA WDC WD20EZAZ-00G (scsi) ディスク /dev/sdb: 2000GB セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: gpt ディスクフラグ: 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 1049kB 2000GB 2000GB ext4 primary
ちなみにこれはGUIフロントエンドのgpartedでもできます(partedコマンドのほうが簡単だと思いますが...)。
# インストール
$ sudo apt install gparted
$ sudo gparted
次に、このパーティションをフォーマットします。mkfsコマンドを使用します。
$ sudo mkfs.ext4 /dev/sdb1 mke2fs 1.44.1 (24-Mar-2018) /dev/sdb1 contains a ntfs file system Proceed anyway? (y,N) y Discarding device blocks: done Creating filesystem with 488378368 4k blocks and 122101760 inodes Filesystem UUID: 055ff5f3-7abf-40b1-bcfa-2f1068d18d3c Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done
これをマウントします。
マウントポイントを作成し、/etc/fstabに情報を追記することで起動時に自動マウントするように設定します。
僕はホームディレクトリ直下にマウントポイントとしてhobbyディレクトリを作成しました。
また、fstabの記述にはfstabについて - Qiitaを参考にしました。
$ mkdir hobby $ vim /etc/fstab (追記>) /dev/sdb1 /home/nuts/hobby ext4 defaults 0 2
再起動するか$ sudo mount -a
で手動マウントすることで確認できます。
ここで、fstabに追記した中で6つ目のフィールドを2に設定し起動時のfsckのチェックを有効とした一方、
デフォルトではそもそもfsck自体が起動時に実行されないようになっています。
これはファイルシステムをext2、ext3、ext4にした場合はtune2fsコマンドを用いて以下のように確認できます。
$ sudo tune2fs -l /dev/sdb1 ~~~中略~~~ Mount count: 1 Maximum mount count: -1 Last checked: Sun Feb 2 12:48:01 2020 Check interval: 0 (<none>) ~~~中略~~~
Maximum mount countが-1、Check intervalが0と設定されているのでこのままでは実行されません。
なので、(fsckが定期的に実行されて欲しい人は)設定してやる必要があります。
僕は迷子のファイルがあるかを定期的に確認したかったので、6ヶ月単位で実行されるようにしました。
$ sudo tune2fs -i 6m /dev/sdb1 Setting interval between checks to 15552000 seconds
確認すると変更されているのがわかります。
$ sudo tune2fs -l /dev/sdb1 ~~~中略~~~ Last checked: Sun Feb 2 12:48:01 2020 Check interval: 15552000 (6 months) Next check after: Fri Jul 31 12:48:01 2020 ~~~中略~~~
同様の設定をSSDにも行いました。
SMART情報を取得する(未)
SSD、HDDともに僕はバックアップを取っていません。
そのため故障や寿命に早期に気づいてデータの移植・デバイスの交換を行うのが理想です。
そこで、smartctlを用いて定期的なSMART情報の監視を行います。
smartctlは$ sudo apt install smartmontools
でインストールできます。
まず、デバイスが対応しているか一応確認します。
$ sudo smartctl --scan /dev/sda -d scsi # /dev/sda, SCSI device /dev/sdb -d scsi # /dev/sdb, SCSI device
確認できたので、次に定期的にSMART情報を監視するよう設定します。 もし問題が発生した場合はメールで通知するようにします。
まずデーモンと監視間隔の設定を行います。僕は監視間隔を1時間に設定しました。
$ sudo vim /etc/default/smartmontools start_smartd=yes ←アンコメント smartd_opts="--interval=3600" ←アンコメント(3600秒=1時間)
次に
SSDの延命対策をする
swap領域をHDDに設定する(未)
僕のPCのメモリは16GBでそんなに多くないです。
そのためもし頻繁にSSD領域にスワップしてしまうと、書き込み回数が増加しSSDの寿命を短くする一因となります。
そのためスワップ領域をSSDからHDDに変更しました。
ubuntu18.04はデフォルトでは、/swapfileにスワップ領域を確保しています(2GBしかないですが...)。
これは/etc/fstabを確認することでわかります。
$ less /etc/fstab # <file system> <mount point> <type> <options> <dump> <pass> UUID=3476c10d-76c3-4ca6-bde6-996b5a5b7a88 / ext4 errors=remount-ro 0 1 UUID=1071-91BA /boot/efi vfat umask=0077 0 1 /swapfile none swap sw 0 0
また、スワップ領域の容量はfreeコマンドで確認できます。
$ free -h total used free shared buff/cache available Mem: 15G 3.2G 9.2G 123M 3.1G 11G Swap: 2.0G 0B 2.0G
確認できたスワップファイルは今後使用しないので、
trimコマンドを有効にする(未)
正確には延命対策じゃない
キーボード周りの設定をする
半角/全角を切り替えるキーを設定する
USキーボードには半角/全角キーがありません。そのためIMEを有効化・無効化するキーを設定する必要があります。 僕はmacと同じように Ctrl + Spaceで設定しました。 magidropack.hatenablog.com
Caps LockとCtrlのキーバインドを入れ替える
Caps Lockはほとんど使わない一方、様々なショートカットで必要なCtrlにはかなりお世話になります。
しかしCaps Lockのほうが打ちやすい位置に配置されているので、その2つのキーバインドを入れ替えます。
Ubuntu/Caps-LockキーをCtrlキーにする方法 - Linuxと過ごす
Caps Lockはいらないという人はどちらもCtrlにすることが可能です。
セキュリティの設定をする
ファイアウォールを有効にする
初期設定では有効になっていないので自分で設定する必要があります。
ufwのGUIフロントエンドであるgufwを使用します。
ファイアーウォールの設定をする - Ubuntu 18.04編
ウイルス対策をする
ubuntuはLinuxなのでウイルスに感染しにくいと聞きますが、僕は怖いので設定します。
ClamAVのGUIフロントエンドであるClamTKを使用します。
www.ninton.co.jp
僕の環境では最初、アンチウイルスのシグネチャのアップデートができなかったのでインストールし直したら
正常にアップデートできました。
定期スキャンとシグネチャの定期アップデートが反映されているかは$ crontab -l
もしくは$ sudo less /var/spool/cron/crontabs/[ユーザ名]
で確認するといいと思います。
ただ、このままでは期待する通りに動いてくれないようです。
そのため僕はいくつかの点を修正しました。
1つ目に、ClamTKのインストールではclamavデーモンはインストールされないので、別にインストールする必要がありました。
ClamTKは定期スキャンとシグネチャの定期アップデートにはcronを用いるので、clamavデーモン自体には用がないのですが、このインストールで作成される/etc/clamav/clamd.confがないとfreshclamがエラーを吐いてしまいました。
そのため$ sudo apt install clamav-daemon
でインストールしました。
2つ目に、定期スキャンとシグネチャの定期アップデートをするにはclamav-daemonとclamav-freshclamの2つのデーモンを使用する、もしくはcronを使用する方法が考えられます。
ClamTKはこのうち後者を採用しています。
この方法は、cronがスキャンなどを実行後にその標準出力/標準エラー出力をメールで送ってくるので、ログを確認しやすく便利です。
そのためこの方法のみ採用したいのですが、初期設定では前者の方法も独立に実行されてしまうようです。
これは無駄なので、cronによる実行1本に絞りました。
まず、以下のコマンドでデーモンを止めます。
$ sudo service clamav-daemon stop $ sudo service clamav-freshclam stop
次にclamscanとfreshclamの設定ファイルの以下のパラメータの変更をします。
$ sudo vim /etc/clamav/clamd.conf DatabaseDirectory /home/[ユーザ名]/.clamtk/db #LogFile /var/log/clamav/clamav.log (←コメントアウト) $ sudo vim /etc/clamav/freshclam.conf UpdateLogFile /home/[ユーザ名]/.clamtk/db/freshclam.log DatabaseDirectory /home/[ユーザ名]/.clamtk/db
その後、これに合わせてcrontabの設定を変更します。
それ以外の部分も結構変えました。
$ crontab -e # もしくは # $ sudo vim /var/spool/cron/crontabs/[ユーザ名] 0 12 * * * /usr/bin/freshclam 0 13 * * * /usr/bin/clamscan --exclude-dir=/home/[ユーザ名]/.clamtk/viruses --move=/home/[ユーザ名]/.clamtk/viruses -i -r /home --log="$HOME/.clamtk/history/$(date +\%b-\%d-\%Y).log"
これにより、以下のように設定されました。
- 12時に~/.clamtk/db以下のシグネチャのファイルがアップデートされる
- 13時に/home以下のディレクトリを再帰的にウイルス検査し、もしウイルスに感染しているファイルは~/.clamtk/viruses以下に隔離される
これで期待通りに動作するかは、テスト用のウイルスEICARをeicar.comという名前でホームディレクトリに設置し、cronの設定時刻を現在時刻の1分後にして実際に確認すればいいと思います。
ちなみにEICARのテスト文字列はwikipediaからコピペできます。
最後ですが、3つ目にClamTKのGUI上からディレクトリ/ファイルをスキャンしても、ウイルスは検知できるが隔離や削除ができないという問題があるようです。
そのため、以下のサイトのようにしてロケールの設定を変更しました。
遠隔操作の設定をする
外出先からいじれるようにしたいので、遠隔操作の設定を行いました。
sshの設定をする
以下のサイトに詳しく載っているので、則れば大丈夫です。
qiita.com
ただ、僕は鍵をED25519で生成しました。
生成可能な鍵の種類はこちらのサイトに詳しく載っています。
qiita.com
各引数に関しては、manを使用するか、https://euske.github.io/openssh-jman/ssh-keygen.htmlを見れば詳しくわかるかと思います。
VPNの設定をする
僕はマンションタイプのWi-Fiを使用しているので、グローバルIPを使用できません。
そのためこのままでは、sshにしろ、RDP/VNCにしろ自宅のデスクトップに外部のネットワークからアクセスできません。
そこで色々悩んだ結果、VPSを用いてVPNを利用することにしました。
VPSとしては、ConohaのVPSを使用することにしました。
僕は、一番安いプランなのでスペックはかなり貧弱(CPU1コア、メモリ512MB、SSD30GB)なのですが、620円/月でグローバルIPアドレスを使用できるのはなかなかコスパがいいと思います。
VPSの契約が完了し、仮想コンソールを立ち上げたらまず基本設定を行います。
初期設定は以下を参考にしました。
note.com
ssh接続時に日本語が文字化けしていたので、ロケールの修正をしました。
$ sudo apt install language-pack-ja $ echo 'export LANG=ja_JP.UTF-8' >> .bashrc $ source .bashrc
また、このままでは日本語入力もできなかったので修正しました。
linux:userland:ubuntu_uimfep [HYPERでんち]
あとはsshやvimの設定ファイルなどを自分の好きにいじれば基本設定は終わりです。
では、次にVPNの設定を行います。
私はOpenVPNを用いてVPNサーバを設定しました。
こちらの記事に沿ってやっていけばサーバ側の設定は十分です。
qiita.com
次に、クライアント側の設定をする必要があります。
まず、Ubuntuをインストールしたデスクトップはこちらの記事を参考にしました。
qiita.com
また、ノートPCのMacbook proには2つ上のリンクの中で書いてある方法でうまく設定できました。
最後に、iPadとiphone6sには以下のOpenVPN JPの公式ページに記載されている方法で設定できました。
ただ、ちょっと古めの情報なので適宜保管してください。
iPhoneやiPad (iOS) でOpenVPNを使ってみよう! | OpenVPN.JP
最後に、こちらのサイトにアクセスして、グローバルIPアドレスがVPSサーバーのそれになっていたら設定が完了です。
リモートデスクトップの設定をする
MacないしはiPadからデスクトップを操作したいと考えているのでリモートデスクトップの設定をしました。
Chrome Remote Desktopの設定をする
一番簡単に使用できるリモートデスクトップはChrome Remote Desktopだろうということで設定しました。
設定自体はすごく簡単で、ホスト側とリモート側にそれぞれChrome拡張機能をインストールするだけです。
ただこのままでは、iPadから接続時に新しいデスクトップのセッションが始まってしまいうまくいきませんでした。
そこで下記サイトを参考にしてプログラムを書き換えることでリモート操作できるようになりました。。
xvideos.hatenablog.com
Texの環境を作る
研究をしていると資料の提出はWordではなくTexがメインです。
ラップトップだけでなくデスクトップでも資料作成ができるように環境を構築しました。
僕はTeX Wikiを参考にしてミラーサイトからダウンロードしてきてインストールしました。
ちなみに、ここにはアップデートの方法なども記載されています。
https://texwiki.texjp.org/?Linux#texliveinstall
結構時間がかかりますが、インストールし終わったら一応テストしました。
LaTeX入門/レポート - TeX Wiki
上のリンクにあるサンプルをtest.texとして保存して、以下のコマンドを叩いてpdfが閲覧できたらOKです。
$ platex test.tex $ dvipdfmx test.dvi $ evince test.pdf
エディタの設定/インストールをする
Vimの設定をする
やはりエディタといったらVimですよね(偏見)。
TUIとして簡単に使える上に拡張もかなり自由にできるので重宝しています。
「Vimよくわからない」という人はこれを読むといいと思います。
neko-mac.blogspot.com
以下に設定について書いていきますが、僕はVimを使い始めて数カ月の若輩です。
世の中にはすごい人たちが書いたVimの説明記事がたくさんあるので、詳しく知りたかったら自分で調べるのをおすすめします。
では、vimrcの設定です。
僕は自分が今までに設定したものがあったので、それを使いました。
もし今まで設定したことがない人はこちらなどを参考にすればいいと思います。
qiita.com
クリップボードとの連携に関しては以下のサイトを参考にしました。
ちなみに、僕はvim-gnomeを入れ直しました。
Vimでクリップボードからのペーストを可能にする – MY ROBOTICS
以上で基本的なことは設定できますが、他にカラースキームやプラグインを設定します。
まず、カラースキームとしては僕はmolokaiを使っています。
qiita.com
次に、プラグインに関してですが、まずプラグインマネージャとしてはvim-plugを使っています。
他にも種類はたくさんあるようなのでどれを使っても正直問題はないと思うのですが、vim-plugはvimrcへの記述量が少ないのでその点ではおすすめできるかと思います。
qiita.com
では入れるプラグインはどうするのかという話なのですが、これは完全に個人の好みの部分が大きすぎるので自分で調べるのが一番かと思います。
ただ、一応僕のvimrcもおいておきます。
基本設定も含めて参考にしていただけたらなと思います。
Kiteのインストールをする
これはエディタではなく、PythonのコードをAIで強力に補完してくれるツールです。
Pythyonでプログラムを書く人には必須だと思います。
対応エディタはVim、NeoVim、Atom、PyCharmなど結構たくさんある上に、それぞれのエディタでプラグインを入れる必要もないので導入がすごく楽です。
以下のサイトを参考にしました。
qiita.com
アプリケーション/ソフトウェアをインストールする
Adobe Flush Playerをインストールする
Google chromeをインストールする
w3mをインストールする
ターミナルから起動/操作できるCUIブラウザです。
ちょこっと調べるときに便利です。
インストールは以下のコマンドでできます。
$ sudo apt install w3m
ただ、このままでは画像を表示できないのでw3m-img
もインストールしたんですが、GNOME端末では動作しませんでした。
また、基本的に実行時は$ w3m [url]
なのですが、僕はw3m: テキストブラウザ — 苦労する遊び人の玩具箱 1 ドキュメントを参考にして、以下のコードを.bashrcに追記することで$ www hogehoge
でgoogleの検索結果を表示するようにしました。
function www() { local str opt if [ $# != 0 ]; then for i in $*; do str="$str+$i" done str=`echo $str | sed 's/^\+//'` opt='search?num=50&hl=ja&lr=lang_ja' opt="${opt}&q=${str}" fi w3m http://www.google.co.jp/$opt }
これで以下のようになります。
$ www w3m
LINEをインストールする
以下のサイトを参考にしてDockからアプリケーションのように扱えるようにしました。
qiita.com
Slackをインストールする
ソフトウェアセンターからインストールしたら日本語が入力できなくなってしまいました。
そこで以下のサイトを参考にしたら日本語入力ができるようになりました。
qiita.com
スクリーンレコーダをインストールする
画面収録が行えるようになります。
僕は結構便利かなと思います笑
freepc.jp
細かい設定をする
トップバーの時計の ∶ の幅を狭くする
Ubuntu 18.04 LTSをインストールした直後に行う設定 & インストールするソフト
最後に
ご指摘やアドバイス等がありましたらご連絡いただけると嬉しいです。