ONE NOTE

Rage, rage against the dying of the light.

李さんは部長にほめられました

文法

动词被动形式

动词类别基本形被动形式
一类动词書く書かれる
急ぐ急がれる
読む読まれる
話す話される
二类动词食べる食べられる
見る見られる
三类动词来る来られる
するきれる

被动语法

  1. 名詞は [名詞に] 動詞られます

李さんは 部長に 褒「ほ」められました。

小李被部长表扬了。

  1. 名詞は 名詞に 名詞を 動詞られます

馬さんは 森さんに カメラを 壊されました。

小马让森先生把照相机弄坏了「小马的相机被森先生弄坏了」

  1. 名詞は 名詞に 動詞られます「表示受害的被动句」

陳さんは 小鳥に逃げられました。

小陈的鸟逃走了。

私達は雨に降られました。

我们被雨淋了。

  1. 名詞 は/が 動詞られます

駅前に高いビルが建てられました。

车站附近高楼被建造起来了。

  1. 名詞は 名詞に よって 動詞られます。

    よっての漢字は因って

この車は 日本の有名な デサイナーに 因って 設計「せっけい」されました。

慣用語

  1. ~とも「跟在数量后面,表示全部」

    二日とも雨に降られて、大変でしたよう。

  2. いやあ「男性使用,情绪激动,哎呀」
  3. 参「まい」りました「相当于 真糟糕」

    参りましたよ、雨に降られて、びしょうめれです。

    真糟糕,被雨淋成落汤鸡了。

  4. 巻き込まれて「まきこまれて」「被卷入不好的事情」

テレビをつけたまま、出「で」かけてしまいました

文法

  1. 動詞/名詞の+まま、小句「”还…就…”,本该做的事情没做」

    常常和前面学过的していました连用,例如:

    李さんはコートを着たまま、ベットで寝てしまいました。

  2. のに「”尽管,明明”」

    目覚「めざ」ましを掛けておいたのに、今朝は起きられませんでした。

    尽管上了闹钟,还是没起来。

  3. はずです「主题的比较确定的推测,”我觉得应该是”」

    会議は五時までですから、もうすぐ終わるはずです

    キムさんはこの大学の学生のはずです

  4. はずがありません「同上,否定形式」

    「はず」の漢字表記「表記」は「筈」です。

慣用語

  1. 目覚ましをかけます:定闹钟
  2. 一昨日送「おく」ったんですものね:ですもの相当于ですから
  3. せったく~のに「”明明特意…”」
  4. こちらこそ:我才是
  5. 早速「さっそく」「相当于すぐ」

眼鏡を掛け「かけ」て本を読みます

文法

  1. 文節+て/ないで+文節「在a的状态下做b」

    眼鏡をかけて本を読みます

    今日は傘を持たないで出かけます

  2. 文節(の)+ために、文節「因为,所以」為に

    事故「じこ」があったために、電車が遅れたんです。

    明日マラソン大会「たいかい」がある為に、この道路「どうろ」は通行禁止「つうこうきんし」になります

  3. 動詞て+いきます/きます

    课本中讲的比较复杂,其实就相当于中文的去干嘛干嘛

慣用語「かんようご」

  1. も:数量超过预想

  2. 遠く:之前学过一类形容词变く做副词,但是遠く、近く可以作名词,表示近处,远处

  3. 絶対:可以修饰否定内容

    森さん、約束の時間は七時です。絶対に遅「おく」れないでくださいね。

  4. せっかく:特意,好不容易

    せっかく北京へ来て、ここを見ないで帰ることはできませんよ。

これから友達と食事「しょくじ」に行くところです。

文法

動詞 ところです 「处于某种阶段」

  1. 動詞+ところです「即将进行」
  2. 動詞ている+ところです「进行中」
  3. 動詞た+ところです「刚完成」

動詞た+ばかりです「刚完成」

このモノレールは、去年開通「かいつう」ばかりです。

这条单轨铁路去年刚刚开通。

動詞 始めます/出します「变化的开始」

この本は、昨日読み始めたばかりです。

雨が降り始めました。

子供が泣き「なき」出して、困りました。

動詞 続けます「不间断的持续」

三時間歩き続けました。

動詞 終わります「结束」

先週もらった薬はもう飲み終わりました

慣用語

  1. お待たせしました:久等啦
  2. チケット/切符「きっぷ」/券:票
  3. まだ耳の奥に音楽が残「のこ」っています:耳边

優勝「ゆうしょう」すれば オリンピックに出場「しゅつじょう」することができます。

文法

ば型:表示假定条件

类型基本型ば型
一类動詞書く書けば
急ぐ急げば
飛ぶ飛べば
読む読めば
二类動詞食べる食べれば
見る見れば
寝る寝れば
三类動詞来る来れば
するすれば
一类形容词ないなければ
楽しい楽しければ
二类形容词綺麗綺麗であれば
親切「しんせつ」親切であれば

「假设」相关语法:

  1. 小句1 ば 小句2

    雨がるらなければ、ハイキングに行きましょう。

    部屋がもう少し広ければいいのですが。

  2. 小句 なら 小句:「根据现场言谈或情况,陈述意见或者想法」

    うちの娘為ならば、俺はもうしかしから魔王も倒せるかもしれない。

名詞+でも:列举选项中有代表性的一项

映画でも見に行きませんか?

運動「うんどう」でもしたらどうですか?

とか:列举相同性质的例子

コートとかとか、たくさん買いました。

惯用语

条件表达方式小结:

  1. たら・ば:语义类似于“如果,要是”
  2. ~と:前面的成立,必然导致后面的结果
    1. スイッチを押すと、電気がつきます。
  3. なら:以对方的意志或愿望提出建议
    1. 魚を買うなら、駅前のスーパーがいいですよ。

買っちゃた

〜てしまった的口语形式

さすが

さすがピークちゃん!

戴さんは英語が話せますか

文法

動詞可能形式「能做到」

类型基本型ば型
一类動詞書く書ける
急ぐ急げる
飛ぶ飛べる
読む読める
二类動詞食べる食べられる
見る見られる
寝る寝られる
三类動詞来る来られる
するできる
散歩する散歩できる

~ように「为了某种条件成立」

よく見えるように、大きく書きました。

風を引かないように、気をつけています。「一直在注意不要感冒」

~ようになります「习惯某种状态」

平仮名を間違えないようになりました。「已经不会搞错平假名了」

着物を自分で着られるようになりました。「已经会自己穿和服了」

慣用語「かんようご」

  1. 入り組んでいます「相互交织,极其复杂」
  2. 何だか「不明确的感觉或者判断」
    1. 何だか残念です 总觉得很遗憾
  3. 見えます・見られます「客观上可以看到/人为的条件可以看到」
  4. ら抜き言葉「省略ら的可能形式」

明日、雨が降ったら、マラソン大会は中止「ちゅうし」です

文法

  1. 小句たら、小句「表示假定条件」

    1. 变形方式是过去形式的た变成たら
    2. 寒いかったら、窓を閉めてください
  2. 小句ても、小句「相当于无论也要」

    1. 变形方式是动词て型+も、such as でも、ても
    2. 日本へ帰っても、中国語の勉強を続けてください
  3. 名詞だけ「表示只有,没有更多」

    1. 今年の夏休みは三日だけです。
    2. 森さんと馬さんだけがお酒を飲みます。
  4. 名詞しか+否定「同样表示只有」

    1. 会議室「かいぎしつ」に李さんしかいません「会议室除了小李没别人」
  5. 名詞でも「表示极端的例子,相当于就算」

    1. 世界は残酷だ、それでも君を愛すよ
    2. その計算「けいさん」は子供でもできます。

惯用语

  1. 何かあった「发生了什么」
  2. あと~「只要再有一个很少的量就能完成」
  3. どの家でも「哪一家都行」
  4. 本の通りに「书上说的那样」
  5. なかなか「事情并没有期待的那么简单」

遅くなって、すみません

文法

  1. 小句+て/で、小句「表示原因」

    遅くなって、すみません

    最初は言葉が通じなくて、とても困り「こまり」ました。

  2. 名詞+に、表示用途、基准

    この写真は、なんに使いますか?

    スーパーが近いので、このマンションは買い物に便利「べんり」です。

  3. 動詞のに、表示用途,基准

  4. 名词 ばかり 动词 「所列举事物全部不相同」

    何で野菜ばかり食べているんですか?「为什么光吃蔬菜啊」

    林さんはカラオケで古い歌ばかり歌います。「林先生尽唱一些老歌」

  5. 動詞て型+ばかりいます「总是进行同样的动作」

    張さんは毎日お酒を飲んでばかりいます。「小张整天喝酒」

  6. 小句のが+見えます/聞こえます「可以看到或者听到」

惯用表达

  1. 凧「たこ」:风筝
  2. とにかく:首要的,特别的
    1. とにかく最初は言葉が通じなくて、とても困りました。「特别是开始时语言不通,非常困难」
  3. ぺらぺら:非常流利
  4. 量り売り「はかりうり」:称重卖

问题

Link

给你一个下标从 0 开始的数组 nums ,数组中的元素都是 正 整数。请你选出两个下标 i 和 j(i != j),且 nums[i] 的数位和 与 nums[j] 的数位和相等。

请你找出所有满足条件的下标 i 和 j ,找出并返回 nums[i] + nums[j] 可以得到的 最大值 。

思路

  1. 如图,进行一次遍历+更新最大值与哈希表的方式
  2. 这样,哈希表每个数位和要么存储了最大数字,在遍历次大数字时得到最大数对和。要么存储了次大数字,在遍历最大数字时得到最大数对和。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* @param {number[]} nums
* @return {number}
*/
var maximumSum = function (nums) {
const m = new Map();
let result = -1;
// loop
for (let i = 0; i < nums.length; i++) {
let sum = sumOfDigits(nums[i]);
if (!m.has(sum)) {
m.set(sum, nums[i]);
} else {
// update result
result = Math.max(result, nums[i] + m.get(sum));
// update hashmap
m.set(sum, Math.max(m.get(sum), nums[i]));
}
}
return result;
};

// get sum of digits
function sumOfDigits(n) {
let strNum = Math.abs(n).toString();
let digitSum = strNum.split("").reduce((sum, digit) => sum + parseInt(digit), 0);
return digitSum;
}

console.log(
maximumSum([
229, 398, 269, 317, 420, 464, 491, 218, 439, 153, 482, 169, 411, 93, 147, 50, 347, 210, 251,
366, 401,
]),
);

電車が急に「急に」止まりました

文法

自动词与他动词

自动词是自发的,他动词需要借助外力,区别在于是否人为

从语法上来说,自动词不能接宾语,他动词需要接宾语。

自动他动规律
掛かる「掛かる」掛けるあるー>える
閉まる閉める
止まる止める
壊れる「こわれる」壊すえる・るー>す
消える「きえる」消す「消す」
割れる「割れる」割る不规则

自动+ています「表示结果的存续」

部屋の電気が消えています

房间的灯灭着

「動詞」てしまいます「产生令人不愉快的结果」

森さんはボーナスを全部使ってしまいます

森先生把奖金全花光了

大切な書類「しょるい」をうっかり忘れてしまいました

忘了重要的文件

「动词/形容词」そうです 「表示推测」

雨が降りそうです「好像要下雨」

あまりおいしいそうではありません「感觉不太好吃」「形容词否定」

雨はやみそうにありません「雨看上去不会停止」「动词否定」

前接いい或者ない时,使用方式不太一样:

今日は会議がなさそうです「今天好像没会」

この本はとてもよさそうです「这本书好像很不错」

そうです用在名词或者动词前面时:

美味しいそうなケーキですね「这蛋糕看上去好吃」

子供たちは楽しそうに遊んでいます「孩子们在快乐地玩着」

惯用语

  1. 自动詞强调结果,他动词强调决定的主体
  2. 〜かしら「表示疑问,类似于かな,但是多用于女性」
    1. 森さんたちはもう来ているかしら「不知道森先生他们来了没有?」
  3. それにしても:表示尽管,但是
    1. それにしても、大勢「おおぜい」ならんですね「要说,排队的人可真多啊」
  4. お久「ひさ」しぶりです:好久不见
  5. 相変わらず「あいかわらず」ですね「表示情况没有变化,你还是那个样子啊」
  6. お元気そうで、何よりです「你看起来挺精神,这比什么都好」
    1. 何よりです的完整形式是:何よりいいことです

壁にカレンダーが掛けてあります

文法

  1. 他动て+あります「动作的存续状态」

    壁にカレンダーが掛けてあります。

    窓が開けてあります。

  2. 动词て+おきます「意为预先做某事」

    お客さんが来る前に、部屋を掃除しておきます。

    客人来之前把房间打扫好。

  3. 动词て+みます「意为尝试做某事」

    太田「おおた」さんは中国語で手紙を書いてみました。

    太田先生尝试用中文写了一封信

  4. 小句/动词の+ために「為に」、为了如何如何,表目的

    日本に留学するために、お金をためています

    为了去日本留学而攒钱

惯用语

  1. とっておきの+名詞:表示为了某种用途,而特别留着的东西
    1. これはとっておきのお酒です、どうぞ。
  2. しっかり有多种意思,本课表示充足,充分。
    1. 小野さん、今日はしっかり食べておいてください。「小野今天多吃一点」
  3. ハードスケジュール:hard schedule : 表示安排很慢
  4. あちこち:表示多种方向,原型:あちらこちら
  5. もったいない:没有物尽其用而遗憾

一觉醒来,我Clash呢?!

不仅仅是cfw,整个clash系列,从内核到各种客户端无一幸免。

作者进局子了,这clash看来是不能用了,短期可能被迫提供软件漏洞,长期代码失去维护。

于是决定更换到v2ray。

更换到V2Ray

配置

V2Ray 配置指南

透明代理(TPROXY)

路由功能

嗯,不错,基本功都都能实现。

问题

但是接下来发现一些问题

首先是subconverter只能转换订阅成为vmess://的列表,没有找到直接转换成config.json的办法,非常不方便。

然后打算使用现有的完备客户端,但是没有找到合适的运行在linux server的web客户端。

最后就是没发现v2ray有自动测速,自动选择之类的配置,不太方便。

总结下来,都不是大问题,但是,我懒得搞了。

现在这一套clash core + subconverter + iptables的模式先用着。

至于可能被迫提供0day漏洞,我觉得应该不至于,本人一直用的是开源版本clash而不是clash premium,软件本体不至于有后门(侥幸心理)。

还是等后面有更好的工具能满足我的需求时再换吧。

哎,翻墙穷蛆哥们的末日就快到咧。

Clash内核定制化

于是打算在现有clash基础上进行定制化。

make构建工具

Make 命令教程-阮一峰的网络日志

makefile的语法有些类似于shell脚本,用于指定不同target如何构建,以及构建前提条件。

通过make工具,可以很轻易的实现大型项目(并不限于c语言项目)的多构建目标的编译。

例如,以下clash项目的makefile核心语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
VERSION=$(shell git describe --tags --always || echo "unknown version")
BUILDTIME=$(shell date -u)
GOBUILD=CGO_ENABLED=0 go build -trimpath -ldflags '-X "github.com/Dreamacro/clash/constant.Version=$(VERSION)" \
-X "github.com/Dreamacro/clash/constant.BuildTime=$(BUILDTIME)" \
-w -s -buildid='

all: linux-amd64 darwin-amd64 windows-amd64 # Most used

darwin-amd64:
GOARCH=amd64 GOOS=darwin $(GOBUILD) -o $(BINDIR)/$(NAME)-$@

darwin-amd64-v3:
GOARCH=amd64 GOOS=darwin GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@

darwin-arm64:
GOARCH=arm64 GOOS=darwin $(GOBUILD) -o $(BINDIR)/$(NAME)-$@

linux-386:
GOARCH=386 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@

这段规则指定了不同构建目标的构建规则。

定制化

之前clash内核源代码我留有备份,最近针对于源代码进行了一些定制化,目前保存在自己的私人仓库里。

clash项目的源代码结构还是比较清晰的,做一些二次开发也比较容易,以后有新的协议也许可以开发一下兼容,自己的代码用起来比较安心。

已经部署到网关了

目前做了这些:

  • 自定义配置文件目录
  • 精简Country.mmdb,优化查询性能
  • 优化cache.db逻辑
  • 自定义规则追溯监控

下一步打算做的:

  • udp: false配置项不知道在哪个版本开始无效了,udp全走规则了。下一步打算修一下这个bug[已解决]

  • doh通过代理进行远端查询

    现在的doh查询没有走代理,导致境外的doh根本不好使,dns优选也不起作用,境内的又有污染,根本不好用。

    下一步打算是doh走代理呢,还是全部fallback都走代理呢,还要再看。

    听说clashMeta支持这个功能,也许可供参考。

udp配置项无效

翻一翻源代码,可以在match()中找到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
func match(metadata *C.Metadata) (C.Proxy, C.Rule, error) {

// ....

if rule.Match(metadata) {
adapter, ok := proxies[rule.Adapter()]
if !ok {
continue
}
if metadata.NetWork == C.UDP && !adapter.SupportUDP() && UDPFallbackMatch.Load() {
log.Debugln("[Matcher] %s UDP is not supported, skip match", adapter.Name())
continue
}
return adapter, rule, nil
}

return proxies["DIRECT"], nil, nil
}

可以看到,adapter不支持udp的情况下还需要开启UDPFallbackMatch这个配置项,具体配置文件是这样的:

1
2
experimental:
udp-fallback-match: true

离谱的是,没有任何文档中有对这个配置项的描述,即使相关文档的最后编辑日期要后于udp-fallback-match的加入日期。

文档中的实验性功能一节,介绍了一个已经弃用的sniff-tls-sni

但是这个功能的加入对整个项目的用户影响还是蛮大的(比如我就希望udp直连),但是除非去慢慢翻源代码,你不可能知道还有个配置项可以把这个关了。

有点坑。