スキップしてメイン コンテンツに移動

投稿

2025の投稿を表示しています

Outlookで自動改行させないための設定 ~もういい加減 UTF-8 / base64 でよくね?~

Outlookで勝手に「自動改行」させないための設定、正解は、[ファイル] - [オプション] - [詳細設定] の「文字設定オプション」で 「送信メッセージで優先使用するエンコード方法( E ):」を『 Unicode (UTF-8) 』にする 。 こうすることで、テキスト形式のメールは Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 として送信されるので、受信側でメールを表示すると  閲覧環境にあわせて適切に「折り返し」  送信者の意図した位置で「改行」 される。 送ったメールの「ソース」を受信側で表示するとこんな感じ。 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Content-Language: ja 44CA44KE44GB44CBDQrjgIDjgZPjgozjgpLoqq3jgpPjgafjgYTjgovjgajjgYTjgYbjgZPjgajj ga/jgIFiYXNlNjTjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/mloflrZfliJfjgpLjg4fjgrPjg7zj g4njgZfjgZ/jga7jga3jgIHjgZnjgbDjgonjgZfjgYTvvIENCg== base64エンコードすると、76文字で「改行」していることがわかるよね。 っていうかさ、違うんだよ。いつも、もやーっとするのね。 『Unicode (UTF-8)』って、Unicode という「符号化文字集合(character set)」を UTF-8 という「文字符号化方式」で「エンコード」してるんであって、「メールのエンコード方法」じゃないんだよね。 本来なら 符号化文字集合は何を使いますか? 文字符号化方式は何を使いますか? メールのエンコードはどうしますか? と3つ聞かないといけないんだけど、メールのヘッダには「符号化文字集合」を表すヘッダがないから(というか、世の中そうなんだけど)、1.と2.が「セット(UTF-8と言えばUnicode)」になってて、3.はそれに従う(8ビット...

sftp専用ユーザー

sftp専用ユーザーはsshでもログインできる必要があるので、ftp専用ユーザーのように、-s /sbin/nologin としない。 # useradd sftpuser # passwd sftpuser New password: Retype new password: passwd: all authentication tokens updated successfully. chrootする場合は # vi /etc/ssh/sshd_config ~ Subsystem sftp internal-sftp ~ chrootしない場合は # vi /etc/ssh/sshd_config ~ Subsystem sftp /usr/local/libexec/sftp-server ~ sftp専用ユーザーを指定する。 Chrootさせるなら、ChrootDirectoryを指定する。 # vi /etc/ssh/sshd_config ~ Match user sftpuser ChrootDirectory /var/www/ ForceCommand internal-sftp ~

.NET DateDiff()で月数を求める

.NET の DateDiff() を使って月数を求めた。 Debug.Print(DateDiff(DateInterval.Month, CDate("2025-01-01"), CDate("2025-01-31")).ToString()) Debug.Print(DateDiff(DateInterval.Month, CDate("2025-01-01"), CDate("2025-02-01")).ToString()) Debug.Print(DateDiff(DateInterval.Month, CDate("2025-01-02"), CDate("2025-02-01")).ToString()) Debug.Print(DateDiff(DateInterval.Month, CDate("2025-01-02"), CDate("2025-02-02")).ToString()) Debug.Print(DateDiff(DateInterval.Month, CDate("2025-01-31"), CDate("2025-02-01")).ToString()) ↑の結果は↓ 0 1 1 1 1

INSERTしてからUPDATEする

UPSERT/MERGEの話ではない。 INSERT文とUPDATE文の両方をメンテナンスするのが面倒になってきた。 REPLACE文はDELETE走るし、MERGEは結局INSERT/UPDATEの両方にすべての項目を書かないといけないし、INSERTとUPDATEの両方で入力値が正しく登録されているかを確認しないといけない。 項目多いとめんどい。 そこで考えた。 こうすれば楽できないかと。 ■ぼくのかんがえたさいきょうのこうしんしょり トランザクション開始 IF 新規 THEN     主キーとデフォルト値でINSERT END IF 入力値でUPDATE コミット ・・・さて、仕事するかな