ここのことはなかったことにするかもしれない

仕事がらみの記事を主として扱いますが、あくまで個人ブログです。2013年以前の記事は https://yellow-73.hatenablog.com/ にあります。

Thunderbirdでメールが何度も重複受信される(まだ治らない)

標記の通り、一度受信したメールを何度も受け取るトラブルが発生。

私の場合、1ヶ月程度サーバに貯めるようにしていて、Thunderbirdから削除を実行します。このため、重複受信が起こりやすい環境になっています。

まず、Thunderbirdプラグイン "Remove Duplicate Messages" を導入して、重複メールを削除します。

その後、調べたところ

okwave.jp

にあるとおり、popstate.dat がおかしくなっていると判断しました。

(ユーザフォルダ)\AppData\Roaming\Thunderbird\Profiles\(プロファイル名)\Mail\(サーバ名)の下にありました。おそらく、POPの最後の状態を記憶するファイルなんだろうと。

これを消して、Thunderbird を再起動。すると、サーバに残っているもの(私の場合1ヶ月分)を二重受信します。

その後はトラブルが解消されたと思ったのですが…

まだダメです。

どうしよう…。

VSCodeでCygwinのgccとmakeを使う

エクステンションを入れる

拡張機能」から「C/C++」を入れて下さい。

launcher.json と task.json を作る

Cファイルを作成

まず、a.c を作り、適当なコードを書きます。

#include 

int main() {
  printf("Hello World.\n");
  return 0;
}

tasks.json の作成

a.cを開いた状態で、「実行」→「デバッグの開始」を選択します。

ウィンドウの中央上端に「環境の選択」の選択肢が現れるので「C++ (GDB/LLDB)」を選択します。

続いて、「gcc.exe - アクティブファイルのビルドとデバッグ コンパイラ C:\cygwin64\bin\gcc.exe」を選択します。

これで .\.vscode\tasks.json が作られます。

デバッグが始まると思いますが、とりあえずうまくいかないはずですが、無視して終了させます。

ここで、必ず終了させて下さい。たとえば、ウィンドウ中央上端のデバッガ用のボタン列の「□」をクリックする等します。終了させると、.\.vscode\launcher.json が生成されます。

ファイルの編集

launcer.json の編集

外部コンソールを使うよう変更

"externalConsole": false,

"externalConsole": true,

に変更します。ここを変更しないと、デバッガが動いてくれません。原因とかは、私はいっさい理解していません。

確認事項

次の2点の通りになっているか確認しておいて下さい。

"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"miDebuggerPath": "C:\\cygwin64\\bin\\gdb.exe",

いったん実行してみる

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の設定変更を行います。

  • コンパイラパス」は選択肢になっていて、"C:/cygwin64/bin/gcc.exe"等とします。
  • 「IntelliSenseモード」も選択肢になっていて、"windows-gcc-x64"にします。

おわりに

cygwinベースの開発であっても、VSCodeからデバッガが動かすための手順を示しました。
ちょっと難しかったけれども、エディタのはずが統合開発環境っぽくできるのがすごいなと思いました(小学生なみの感想)

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 は、何をもってまず実行します。
  • lessvmも持っていないので、インストールします。

続いて、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を使う

はじめに

自分専用。

手持ちのWindows環境でCordovaが使えるようになるまでの記録です。

Android SDKを入れる

手持ち環境では Andriod Studioを入れていたので、そこからSDKをインストール。

"...\android\Sdk\platform-tools", "...\android\Sdk\tools" にパスを通しておきます。

事前に入れるもの

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レポジトリを作る

# ベアレポジトリ

https://www.nekotricolor.com/entry/theory-of-bare-and-non-bare-repository-manage-wordpress-themes-with-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
```