Thunderbirdでメールが何度も重複受信される(まだ治らない)
標記の通り、一度受信したメールを何度も受け取るトラブルが発生。
私の場合、1ヶ月程度サーバに貯めるようにしていて、Thunderbirdから削除を実行します。このため、重複受信が起こりやすい環境になっています。
まず、Thunderbirdのプラグイン "Remove Duplicate Messages" を導入して、重複メールを削除します。
その後、調べたところ
にあるとおり、popstate.dat がおかしくなっていると判断しました。
(ユーザフォルダ)\AppData\Roaming\Thunderbird\Profiles\(プロファイル名)\Mail\(サーバ名)
の下にありました。おそらく、POPの最後の状態を記憶するファイルなんだろうと。
これを消して、Thunderbird を再起動。すると、サーバに残っているもの(私の場合1ヶ月分)を二重受信します。
その後はトラブルが解消されたと思ったのですが…
まだダメです。
どうしよう…。
VSCodeでCygwinのgccとmakeを使う
launcher.json と task.json を作る
tasks.json の作成
a.cを開いた状態で、「実行」→「デバッグの開始」を選択します。
ウィンドウの中央上端に「環境の選択」の選択肢が現れるので「C++ (GDB/LLDB)」を選択します。
続いて、「gcc.exe - アクティブファイルのビルドとデバッグ コンパイラ C:\cygwin64\bin\gcc.exe」を選択します。
これで .\.vscode\tasks.json
が作られます。
デバッグが始まると思いますが、とりあえずうまくいかないはずですが、無視して終了させます。
ここで、必ず終了させて下さい。たとえば、ウィンドウ中央上端のデバッガ用のボタン列の「□」をクリックする等します。終了させると、.\.vscode\launcher.json
が生成されます。
ファイルの編集
いったん実行してみる
a.c の行番号より左側をクリックするとブレークポイントになるので、ブレークポイントにしたうえで「実行」→「デバッグの開始」とするか、F5キーを押すかして、デバッガで実行してみて下さい。
Makeを使う
Makefileの作成
out.exe: a.c $(CC) -g a.c -o $@
注意するべきは、-g
オプションを付けないとブレークポイントも何も効かなくなる点です。
また、out.exe
を出力しているので launch.json
で変更が発生します。
tasks.json の編集
tasks.jsonに次を追加します。"task"へのエントリの追加です。なお、ラベルはtasks内で重複しないようにして下さい。
{ "tasks": [ { (すでに書かれている) }, { "label": "My Make", "type": "shell", "command": "C:\\cygwin64\\bin\\make.exe", "args": [], "group": "build", "options": { "cwd": "${workspaceFolder}", "env": { "PATH": "C:\\cygwin64\\bin" } } } ....
当初「"cc"が存在しない」等のエラーが出たのですが、環境変数PATH
をセットすることで対応できるようになりました。
launcher.json の編集
preLaunchTaskを変更してmakeを動かすようにする
configurations/preLaunchTask
を、"My Make
に変更します。
"configurations": [ { .... // "preLaunchTask": "C/C++: gcc.exe アクティブなファイルのビルド" "preLaunchTask": "My Make" } ]
ここの "My make"
は、task.json に記載したラベルです。
実行ファイルの設定を out.exe に変更する
これまでの設定ではa.c
でデバッガを動かすと、a.c
と同じフォルダ内のa.exe
が生成される大前提でした。
make
を使う以上、Makefile
の設定に合わせないといけません。
"configurations": [ { .... // "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "program": "${workspaceFolder}\\out.exe", ... } ]
IntelliSenseの設定変更
C/C++: Edit Configurations (UI)
から、IntelliSenseの設定変更を行います。
VSCodeのターミナルにCygwinを使う
はじめに
ターミナルでCygwin使えるといいなーということで、やってみましたって小学生並みやな。
方法
- Cygwin で chere を入れる
- settings.json を開く (コードパレットから "Preferences: Open Settings (JSON)"を探してクリック
- 次の設定を追加
{ ... "terminal.integrated.profiles.windows": { "Cygwin Bash": { "path": "C:\\cygwin64\\bin\\bash.exe", "args": ["/bin/xhere", "/bin/bash"] } } }
一次プロパティ(というのかどうか知らないけど、プロパティのプロパティみたいになってない)として "terminal.integrated.profiles.windows" を指定して、そこにターミナルの起動設定を書き込みます。
Dockerをほんのちょっといじったメモ
ubuntuコンテナの立ち上げ
Docker Desktop の「設定」で「Use the WSL 2 based engine」のチェックを外す。ただ、インストール時に既にWSL関係のインストールを行わないように切り替えられたはずです。
Docker Desktop は管理者権限で起動します。コマンドプロンプトからの"docker"コマンド (CLI)を使ってしようとすると、うまくいきません。
ubuntuのコンテナを作るには
docker run --name (コンテナ名) -p 127.0.0.1:8080:80 -itd ubuntu
としました。
ubuntu内でApacheを入れるまで
まずは、次のコマンドを二つ実行。
apt-get update apt install less vim
apt-get update
は、何をもってまず実行します。less
もvm
も持っていないので、インストールします。
続いて、Apacheを入れます。
apt install apache2 # vi /etc/apache2/ports.conf service apache2 start
2回目以降の起動
Docker Desktop を管理者権限で起動します。
Docker Desktop にコンテナ一覧が出るので、そのうちの一つをクリックします。
"START"ボタンが出ているので、押します。これでコンテナが起動します。
コンテナが起動すると、今度は "CLI" ボタンを押します。そうすると今度は次のコマンドを入れます。
service apache2 start
shutdownの予約とキャンセル
haltで止めるとします。
# 指定日時 (年は2桁であることに注意) shutdown -h yyMMddhhmm # 指定分経過後(10分) shutdown -h +10m # 指定分経過後(10分) (mを付けなくてもいい) shutdown -h +10
キャンセルは
shutdownプロセスをkillする
とのこと。
Cordovaを使う
Android SDKを入れる
手持ち環境では Andriod Studioを入れていたので、そこからSDKをインストール。
"...\android\Sdk\platform-tools", "...\android\Sdk\tools" にパスを通しておきます。
事前に入れるもの
- Node.js - https://nodejs.org/en/
- Chocolatey - https://chocolatey.org/
Cordova等を入れる
Cordovaのインストール
npm install -g cordova
続いて、プラグインをインストール。-g で特定のプロジェクト用でなくそのシステム全体で利用可能になります。
npm install -g cordova-plugin-...
プロジェクト作成
プロジェクトを作り、プラットフォームを追加(ここではAndroidのみ)し、プラグインを導入します。
cordova create (フォルダ名) (名前空間) (アプリ名) cd (フォルダ名) cordova platform add android cordova plugin add cordova-plugin-...
ビルドと実行
次のような環境変数設定を行います。
SET ANDROID_HOME=... SET ANDROID_SDK_ROOT=%ANDROID_HOME%\sdk SET PATH=$(android-studio)\jre\bin;%PATH% SET PATH=$(android-studio)\bin;%PATH% SET PATH=$(android-studio)\plugins\android\lib\templates\gradle\wrapper;%PATH%
ビルドの場合は次通りです。
cordova build android
走らせる場合は次通りです。
cordova run android
gitレポジトリを作る
# ベアレポジトリ
ベア (bare)レポジトリは、ファイルツリーが見えないので、本番サーバ等には使えないけど、下手にいじられることもありません。
ノンベア (non-bare)レポジトリは、ファイルツリーが見えていて、管理データは.gitに置かれています。
そのため、ベアレポジトリは格納、管理に用います。ノンベアレポジトリは、本番サーバや開発等のファイルツリーが必要な場合に用います。
# ベアレポジトリを作る
```
sudo -u git git init (レポジトリ名).git --bare --shared
```
# gitアカウントが無いけど/home/git下のレポジトリをいじりたい
sshを使用します。
SSHの公開キーを /home/git/.ssh/authorized_keys に追加します。
```
ssh-rsa AA... ユーザ名@ドメイン名
```
となっていると思います。
そのうえで、ログイン元において``~/.ssh/id_rsa``等の自分のキーペアを持っておきます。
sshをスキーム名とするURIでアクセスします。パスは絶対パスです。たとえば ``/home/git`` 配下にレポジトリを作っていっている場合には、次のようにします。
```
git clone ssh://git@150.26.38.39/home/git/(レポジトリ名).git
```