2020-02-22 (Sa)
_ またメールが届かなくなった
ConoHa のメールサーバを使ってて2回め。
spark で gmail からテストメールを送信しても spark に届かない。
自作ツールで IMAP アクセスするとメールはある。 届いてるってことでちょっと安心。
じゃぁ spark の問題か…
spark にメールアカウントを設定しなおしてみたけど、 それでもメールが見れない。
gmail app にメールアカウントを設定してみたら、 ちゃんと見れた。さっきのテストメールもある。 ただ、一部 Subject: が切れてるっぽいメールもあるけど。
これきっと、ConoHa のメールサーバと spark との相性とか、 そういう問題だなぁ。どこかで例外が発生して、処理が中断したけど、 ユーザには見えないようにうまく(?)隠して、次回に期待、とか そういう感じだろう。
こんな頻繁に起きるなら、自分で立てた方がマシだ。
_ postfix 動作確認中のこと…
以前自前で立てていたメールサーバの設定は、バックアップ取っていたので、 それを元にメールサーバを構築。
25/tcp は問題ない。次は 587/tcp。
認証を試す。PLAIN しか許可してないので、
echo 'ユーザ名^@ユーザ名^@パスワード' | mewencode -b
で base64 を取得して、
AUTH PLAIN base64の結果
しかし通らず。
535 5.7.8 Error: authentication failed: authentication failure
journal には↓こんな感じ。
2月 23 00:41:43 shiro saslauthd[1045]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure
2月 23 00:41:43 shiro saslauthd[1045]: : auth failure: [user=ユーザ名] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]
2月 23 00:41:43 shiro postfix/smtpd[1033]: warning: SASL authentication failure: Password verification failed
2月 23 00:41:43 shiro postfix/smtpd[1033]: warning: 〜[〜]: SASL PLAIN authentication failed: authentication failure
なのに、↓こっちは OK。
shiro:~ % testsaslauthd -u ユーザ名 -p パスワード -s smtp
0: OK "Success."
なんかおかしい…
/usr/lib/sasl2/smtpd.conf をいじって、log_level を 100 とかにしてみてもこれ以上は何も出ない。
mech_list に login を追加してみた。saslauthd と postfix を restart。こっちでやってみよう。
echo ユーザ名 | mewencode -b
echo パスワード | mewencode -b
それぞれ、
AUTH LOGIN
ユーザ名のbase64
パスワードのbase64
で送信。やっぱり失敗。
んーすごくおかしい…
でも testsaslauthd で問題ないんだから、何かやらかしてるとしか思えず…
postfix → saslauthd → pam_unix.so
こんな感じか。一つの切り分けとして、saslauthd が postfix から何を受け取っているのか知りたい。 おそらくユーザ名やパスワードを受け取ってるはず。
sudo /usr/bin/strace -f -o /tmp/log /usr/sbin/saslauthd -a pam
これで /tmp/log に saslauthd の動きが出力される。その状態で、もう一度 AUTH PLAIN
。
ざーっと眺めていって、あったあった。
1045 read(7, "\0\4", 2) = 2
1045 read(7, "ユーザ名", 4) = 4
1045 read(7, "\0\v", 2) = 2
1045 read(7, "パスワード\n", 11) = 11
1045 read(7, "\0\4", 2) = 2
1045 read(7, "smtp", 4) = 4
1045 read(7, "\0\0", 2) = 2
お、パスワードの後ろに \n
が。テキストなのか? いや、ユーザ名の方には \n
が付いてないな。
!?!?
あぁ、しまった…………… echo
に -n
付けるの忘れた。軒並み。
誤:
echo 'ユーザ名^@ユーザ名^@パスワード' | mewencode -b
正:
echo -n 'ユーザ名^@ユーザ名^@パスワード' | mewencode -b
これで AUTH PLAIN
したら、ちゃんと通りましたとさ。ちゃんちゃん。
またやってしまった... orz
2022-02-22 (Tu)
_ iPhone 13
36回払いに対応だそうで、乗り換えしやすくなったんだそうで?
そうなん?
例えば 10万だとしようか。
¥100,000 / 36 = ¥2,777
2700円を3年も払い続けるんか? 月額として決して安くはないと思うんだけど、 なんでそんなにいつまでも払わされにゃならんの?
まぁ、そっちを選ぶ人はいるんだろうけど、私の感覚ではよく解らん。
_ freetype2 文字幅問題
微妙に 半角:全角 = 1:2 にならない問題。
https://freetype.org/freetype2/docs/tutorial/step2.html
linearHoriAdvance っていうメンバがあるそうな。 16.16 fixed-point number って言うらしい。
今まで私が使ってたのは 26.6 らしい。
16.16 で試してみた。
#include <ft2build.h>
#include FT_FREETYPE_H
#include <freetype/ftimage.h>
#include <freetype/ftdriver.h>
#include <freetype/ftmodapi.h>
#include <math.h>
static unsigned int text[] = {
0x00003042, 0x00003044, 0x00003046, 0x00003048,
0x0000304a, 0x0000304b, 0x0000304d, 0x0000304f,
0x00003051, 0x00003053, 0x00003055, 0x00003057,
0x00003059, 0x0000305b, 0x0000305d, 0x0000305f,
0x00003061, 0x00003064, 0x00003066, 0x00003068,
#if 0
0x00003042, 0x00003044, 0x00003046, 0x00003048,
0x0000304a, 0x0000304b, 0x0000304d, 0x0000304f,
0x00003051, 0x00003053, 0x00003055, 0x00003057,
0x00003059, 0x0000305b, 0x0000305d, 0x0000305f,
0x00003061, 0x00003064, 0x00003066, 0x00003068,
#endif
0x0000000a,
0x00000061, 0x00000062, 0x00000063, 0x00000064,
0x00000065, 0x00000066, 0x00000067, 0x00000068,
0x00000069, 0x0000006a, 0x0000006b, 0x0000006c,
0x0000006d, 0x0000006e, 0x0000006f, 0x00000070,
0x00000071, 0x00000072, 0x00000073, 0x00000074,
0x00000075, 0x00000076, 0x00000077, 0x00000078,
0x00000079, 0x0000007a,
0x00000061, 0x00000062, 0x00000063, 0x00000064,
0x00000065, 0x00000066, 0x00000067, 0x00000068,
0x00000069, 0x0000006a, 0x0000006b, 0x0000006c,
0x0000006d, 0x0000006e,
#if 0
0x0000006f, 0x00000070,
0x00000071, 0x00000072, 0x00000073, 0x00000074,
0x00000075, 0x00000076, 0x00000077, 0x00000078,
0x00000079, 0x0000007a,
#endif
0x0000000a,
};
#define LEN (sizeof text / sizeof text[0])
#define WIDTH 1024
#define HEIGHT 256
#define LEFT 16
#define TOP 128
static unsigned char paper[HEIGHT][WIDTH];
static void draw(FT_Bitmap *bitmap, int x, int y)
{
for (int j = 0; j < bitmap->rows; j++) {
for (int i = 0; i < bitmap->width; i++) {
unsigned char c = bitmap->buffer[j * bitmap->pitch + i];
if (c) {
if (y + j >= 0 && y + j < HEIGHT) {
if (x + i >= 0 && x + i < WIDTH)
paper[y + j][x + i] = 255;
}
}
}
}
}
int main(void)
{
FT_Library library;
int error;
error = FT_Init_FreeType(&library);
if (error) {
fprintf(stderr, "ft init error\n");
exit(1);
}
FT_UInt hinting_engine = FT_HINTING_FREETYPE;
FT_Property_Set(library, "cff",
"hinting-engine", &hinting_engine);
FT_Face face;
error = FT_New_Face(
library,
"/usr/share/fonts/TTF/NasuM-Regular-20141215.ttf",
0,
&face);
if (error) {
fprintf(stderr, "new face error\n");
exit(1);
}
error = FT_Set_Char_Size(
face,
0,
8 * 64,
300,
300);
if (error) {
fprintf(stderr, "set size error\n");
exit(1);
}
#define GETA(x) ((x) << 16)
#define UGETA(x) ((x) >> 16)
FT_Vector pen;
pen.x = GETA(LEFT);
pen.y = GETA(TOP);
unsigned int idces[LEN];
for (int i = 0; i < LEN; i++) {
if (text[i] == '\n') {
fprintf(stderr, "%ld\n", pen.x);
pen.x = GETA(LEFT);
pen.y += GETA(24);
continue;
}
idces[i] = FT_Get_Char_Index(face, text[i]);
error = FT_Load_Glyph(
face,
idces[i],
0 |
FT_LOAD_DEFAULT | // x
// FT_LOAD_NO_HINTING | // o
// FT_LOAD_PEDANTIC | // x
// FT_LOAD_NO_AUTOHINT | // x
0);
if (error) {
fprintf(stderr, "no glyph error\n");
exit(1);
}
error = FT_Render_Glyph(
face->glyph,
FT_RENDER_MODE_NORMAL);
if (error) {
fprintf(stderr, "glyph render error\n");
exit(1);
}
draw(&face->glyph->bitmap,
UGETA(pen.x) + face->glyph->bitmap_left,
UGETA(pen.y) - face->glyph->bitmap_top);
pen.x += face->glyph->linearHoriAdvance;
}
fprintf(stderr, "\n");
printf("P3\n%d %d\n%d\n", WIDTH, HEIGHT, 255);
for (int y = 0; y < HEIGHT; y++) {
for (int x = 0; x < WIDTH; x++) {
if (paper[y][x]) {
printf("%d %d %d ", 255, 255, 255);
} else {
printf("%d %d %d ", 0, 0, 0);
}
printf("\n");
}
}
}
結果、
綺麗に横幅が一致! やほ〜〜い!!
26.6 だと正確に表現できなくて丸め誤差が蓄積していってたらしい。
でもこれを Emacs に載せるのは無理かなぁ。 各文字は pixel に align されてる前提なんだよね。
(/ 2184192 65536.0)
33.328125
(/ 1092096 65536.0)
16.6640625
↑これが文字幅。全角 33.3 px、半角 16.7 px。 両方切り上げれば合うのか?
んー合わない。
Emacs のフォント計算ってかなり面倒だよね… 文字をどこにでも表示できなきゃいけないし、 いろんな driver で各 metrics を同じ意味で 使えなきゃいけないし、 仕方ないんだろうなぁ。
2023-02-22 (We)
_ 原神 - 異夢の溶媒をゲット
今までボス戦は Lv70 でしか戦ってなかったな、と思って、 Lv90 と戦ってみた。
タルタリヤつえーー。
でも倒したら異夢の溶媒をゲットできた。 おぉ Lv90 だとわりとあっさりくれるんや。
その後、スカラマシュLv90と戦って、 相変わらず勝ち方がよくわからんけど粘り勝ちして、 今度はもらえなかった。 まぁ連続では無理か。
ボスって凍結しないから会心率いまいち上がらないんだよね…
2024-02-22 (Th)
_ 原神 - 計算
綾華の氷ダメバフを計算。
綾華のベース + 聖遺物(+46.6%)で 61.6%。 ダッシュ終了時の氷が付着して +18%。 万葉の固有天賦で +37.8%。
これで 117.4%。ダメバフこれだけあればまぁいいか。
あとは申鶴だな。
ぎゃーー、ボーダーレスにしたら、Win+G でキャプチャが機能しない… いや、Windows の設定の「ゲーム」から「発生したことを記録」を ON にしたら、なおった。