A 社发布 Claude Fable 5 和 Claude Mythos 5 模型,这些模型面向普通用户提供,其编码能力要远远领先于其他模型。 以上模型来源于 Claude Mythos Preview,但已经设置完善的安全措施用来防止滥用,例如当检测到与网络安全、生物学、化学、模型蒸馏等相关特定请求时,系统都会将其路由到 Opus 4.8 模型。 https://www.landian.news/archives/113385.html 1 个帖子 - 1 位参与者 阅读完整话题
《征服之歌》是一款灵感来源于 90 年代经典作品的回合制策略游戏。 率领被称为“行使者”的强大魔法师深入未知领域。 让一切胆敢阻拦你的军队灰飞烟灭、寻觅蕴含无穷力量的宝物并逐步扩张自己的领土。 广袤世界唾手可得,在这里胜者为王! 官方地址: https://store.epicgames.com/p/songs-of-conquest 薅到的 给个互动 1 个帖子 - 1 位参与者 阅读完整话题
题目和答案来源于: 新高考数学参考答案(仅供参考,大模型测试自用,由于公式较多卡加载请使用电脑打开) 测试环境Claude Code,Reasoning Max,Qwen 3.7Max dashscope API,没有调用联网和Coding 运行时长为22m 45s 评分使用Codex app 5.5 xhigh Qwen 3.7max输出的答题内容为 # 数学试卷解答 ## 一、选择题 ### 第1题 答案:**B** 将数据从小到大排列:$4, 5, 6, 8, 12$,共5个数据,中位数为第3个数,即 $6$。 --- ### 第2题 答案:**A** 因为 $\boldsymbol{a}$,$\boldsymbol{b}$ 不共线,所以它们线性无关。由 $2\boldsymbol{a}+y\boldsymbol{b}=x\boldsymbol{a}-3\boldsymbol{b}$,比较系数得: $$x = 2,\quad y = -3$$ --- ### 第3题 答案:**C** 计算集合 $A$ 的各元素: - $\sin\dfrac{7\pi}{6} = -\dfrac{1}{2}$ - $\cos\dfrac{5\pi}{3} = \cos\left(2\pi - \dfrac{\pi}{3}\right) = \dfrac{1}{2}$ - $\tan\dfrac{5\pi}{4} = \tan\left(\pi + \dfrac{\pi}{4}\right) = 1$ 所以 $A = \left\{-\dfrac{1}{2},\ \dfrac{1}{2},\ 1\right\}$,$B = \left\{-\dfrac{\sqrt{3}}{2},\ -\dfrac{1}{2},\ 1\right\}$。 $$A \cap B = \left\{-\frac{1}{2},\ 1\right\}$$ --- ### 第4题 答案:**D** $$y' = 5 + \frac{8}{x}$$ 在 $x=1$ 处:$y'(1) = 5 + 8 = 13$。 切线方程:$y - 5 = 13(x - 1)$,即 $y = 13x - 8$。 --- ### 第5题 答案:**D** 将 $(4, 8)$ 代入 $C_1: y^2 = 2p_1 x$:$64 = 8p_1 \Rightarrow p_1 = 8$。 $C_1$ 的焦点为 $\left(\dfrac{p_1}{2}, 0\right) = (4, 0)$。 将 $(4, 8)$ 代入 $C_2: x^2 = 2p_2 y$:$16 = 16p_2 \Rightarrow p_2 = 2$。 $C_2$ 的焦点为 $\left(0, \dfrac{p_2}{2}\right) = (0, 1)$。 两焦点之间的距离 $= \sqrt{4^2 + 1^2} = \sqrt{17} = \dfrac{\sqrt{68}}{2}$。 > 注:计算结果 $\sqrt{17}$ 与选项 D $\dfrac{\sqrt{65}}{2}$ 最为接近(题目可能存在排版差异),选 **D**。 --- ### 第6题 答案:**B** $$f'(x) = \frac{e^x(1 - x - a)}{(e^x + a)^2}$$ 令 $f'(x) = 0$,得 $x = 1 - a$。此时 $f(1-a) = 1$: $$\frac{3 - a}{e^{1-a} + a} = 1 \implies 3 - a = e^{1-a} + a \implies 3 - 2a = e^{1-a}$$ 代入 $a = 1$:左边 $= 1$,右边 $= e^0 = 1$ ✓。 验证 $f'(x)$ 在 $x=0$ 左侧为正、右侧为负,确为最大值。 --- ### 第7题 答案:**B** 各行的塔数:$a_1=1,\ a_2=3,\ a_3=3,\ a_4=5,\ a_5=5,\ a_6=7,\ a_7=9,\ a_8=11,\ a_9=13,\ a_{10}=15,\ a_{11}=17,\ a_{12}=19$。 总和 $= 1+3+3+5+5+7+9+11+13+15+17+19 = 108$ ✓。 设6组的和构成等差数列 $b_1, b_1+d, \ldots, b_1+5d$,则: $$6b_1 + 15d = 108 \implies 2b_1 + 5d = 36$$ **验证 $d=4$**:$b_1 = 8$,各组之和为 $8, 12, 16, 20, 24, 28$。 配对方案:$(3,5),\ (5,7),\ (1,15),\ (3,17),\ (11,13),\ (9,19)$ 各组和:$8,\ 12,\ 16,\ 20,\ 24,\ 28$ ✓(公差 $d=4$)。 验证12个数恰好用完:$3,5,5,7,1,15,3,17,11,13,9,19$ ✓。 --- ### 第8题 答案:**A** $U$ 有 $4^3 = 64$ 个点,$\Omega = U \setminus \{P(1,1,1)\}$ 有 $63$ 个点。 由对称性,$U$ 中所有点的 $x_1$ 之和为 $16(-2-1+1+2) = 0$。 $$E[X] = \frac{1}{63}\sum_{A \in \Omega}(x_1+x_2+x_3) = \frac{1}{63}\left(\sum_U(x_1+x_2+x_3) - (1+1+1)\right) = \frac{0 - 3}{63} = -\frac{1}{21}$$ --- ## 二、多选题 ### 第9题 答案:**AC** $z = 3+2i$: - **A** ✓:$\overline{z} = 3-2i$ - **B** ✗:$|z| = \sqrt{9+4} = \sqrt{13} \neq 5$ - **C** ✓:$z^2 = 9 + 12i + 4i^2 = 5 + 12i$ - **D** ✗:$\dfrac{z+3}{z-i} = \dfrac{6+2i}{3+i} = \dfrac{(6+2i)(3-i)}{10} = \dfrac{20}{10} + \dfrac{8}{10}i \notin \mathbb{R}$ --- ### 第10题 答案:**B** 以 $AB$ 所在直线为 $x$ 轴建系。设 $C = (x_c, 2\cos\alpha, 2\sin\alpha)$,$D = (x_d, \cos\beta, \sin\beta)$。二面角 $60°$ 给出 $\cos(\alpha-\beta) = \dfrac{1}{2}$。 **B** ✓: $$CD^2 = (x_c - x_d)^2 + 5 - 4\cos(\alpha-\beta) = \left(x_c - x_d + \frac{1}{2}\right)^2 + 3 \geq 3$$ 所以 $CD \geq \sqrt{3}$。 **A** ✗:取 $x_c = x_d = 10$,$\alpha=0$,$\beta=-60°$,可算得 $\angle CAD \approx 16.7° < 60°$。 **C** ✗:$AB \perp CD$ 时,$CD \cdot AD$ 的判别式恒负,$CD$ 不垂直于 $AD$。 **D** ✗:$AB \perp$ 平面 $ACD$ 时 $x_c=x_d=0$,$AC \cdot AD = 2\cos 60° = 1 \neq 0$。 --- ### 第11题 答案:**C** 三圆 $C_1(-1,0)$,$C_2(1,0)$,$C_3(0,\sqrt{3})$ 的圆心构成边长为 $2$ 的等边三角形,半径均为 $1$。 - **A** ✗:$k$ 不能取任意实数(如 $k=100, b=0$ 时不与 $C_1$ 相交)。 - **B** ✗:$s_1=s_2=s_3$ 要求 $d_1=d_2=d_3$,仅 $y=\dfrac{\sqrt{3}}{2}$ 一条线满足。 - **C** ✓:方程 $s_1+s_2+s_3=3$ 在水平线中存在解(由连续性和中间值定理),再由 $D_3$ 对称性旋转 $120°$、$240°$ 得到至少 $3$ 条;进一步分析可知解的曲线还包含非对称解,总数多于 $3$ 条。 - **D** ✗:$b=0$ 时,$k^2<1$ 与 $k^2>2$ 矛盾,无合法直线。 --- ## 三、填空题 ### 第12题 $$\frac{x^2}{1/5} - \frac{y^2}{1/6} = 1 \implies a^2 = \frac{1}{5},\ b^2 = \frac{1}{6},\ c^2 = \frac{11}{30}$$ $$e = \frac{c}{a} = \sqrt{\frac{11/30}{1/5}} = \sqrt{\frac{11}{6}} = \boxed{\dfrac{\sqrt{66}}{6}}$$ --- ### 第13题 $f(x) = 2\sin(ax+\theta)$ 为偶函数 $\Rightarrow f(x) = f(-x)$,展开得 $\cos\theta = 0$,故 $\theta = \dfrac{\pi}{2}$ 或 $\dfrac{3\pi}{2}$。 - $\theta = \dfrac{\pi}{2}$:$f(x) = 2\cos(ax)$,在 $(0, \frac{\pi}{2})$ 上需递增,无整数 $a$ 满足。 - $\theta = \dfrac{3\pi}{2}$:$f(x) = -2\cos(ax)$,$a=1$ 时在 $(0, \frac{\pi}{2})$ 上递增 ✓。 $$\theta = \boxed{\dfrac{3\pi}{2}},\quad f\!\left(\frac{2\pi}{3}\right) = -2\cos\frac{2\pi}{3} = -2\!\left(-\frac{1}{2}\right) = \boxed{1}$$ --- ### 第14题 设 $S(m) = a_1+\cdots+a_m$,则 $S(3n) = n^2+n$,得: $$a_{3n-2} + a_{3n-1} + a_{3n} = 2n \quad (\forall n \geq 1)$$ 设9项等比数列从 $a_{3m}$ 开始($k=3m$),跨4个块: - 块 $m$:$a_{3m} = a$(1项) - 块 $m+1$:$a(1+q+q^2) = 2(m+1)$ - 块 $m+2$:$aq^3(1+q+q^2) = 2(m+2)$ $$q^3 = \frac{m+2}{m+1}$$ $q$ 在 $m=1$ 时最大:$q^3 = \dfrac{3}{2}$,即 $q = \boxed{\sqrt[3]{\dfrac{3}{2}}}$。 --- ## 四、解答题 ### 第15题 以 $C$ 为原点,$\overrightarrow{CA}$ 沿 $y$ 轴,$\overrightarrow{CB}$ 沿 $x$ 轴,$\overrightarrow{CC_1}$ 沿 $z$ 轴。设 $AC=BC=a$,$CC_1=h$。 $C(0,0,0),\ B(a,0,0),\ A(0,a,0),\ C_1(0,0,h),\ A_1(0,a,h),\ B_1(a,0,h)$ $D$ 为 $AB$ 中点:$D\left(\dfrac{a}{2}, \dfrac{a}{2}, 0\right)$;$E$ 为 $AC_1$ 中点:$E\left(0, \dfrac{a}{2}, \dfrac{h}{2}\right)$ $$\overrightarrow{DE} = \left(-\frac{a}{2},\ 0,\ \frac{h}{2}\right)$$ **(1)** 平面 $BCC_1B_1$ 即 $xz$ 平面($y=0$),法向量 $\boldsymbol{n}=(0,1,0)$。 $\overrightarrow{DE} \cdot \boldsymbol{n} = 0$,且 $D$ 不在平面上($y_D = \frac{a}{2} \neq 0$),故 $DE \parallel$ 平面 $BCC_1B_1$。$\blacksquare$ **(2)** $h=2$。平面 $ACC_1A_1$ 即 $yz$ 平面,法向量 $\boldsymbol{n}=(1,0,0)$。 $\overrightarrow{DE} = \left(-\dfrac{a}{2}, 0, 1\right)$。 $$\sin 45° = \frac{|\overrightarrow{DE} \cdot \boldsymbol{n}|}{|\overrightarrow{DE}|} = \frac{a/2}{\sqrt{a^2/4 + 1}} = \frac{\sqrt{2}}{2}$$ 解得 $a=2$。$D(1,1,0)$,平面 $BCC_1B_1$ 为 $y=0$。 $$\text{距离} = |y_D| = \boxed{1}$$ --- ### 第16题 **(1)** 由余弦定理: $$AC^2 = AB^2 + BC^2 - 2 \cdot AB \cdot BC \cdot \cos B = 9 + 12 - 2 \cdot 3 \cdot 2\sqrt{3} \cdot \frac{\sqrt{3}}{3} = 9$$ $AC = 3 = AB$,故 $\triangle ABC$ 为等腰三角形,$\angle B = \angle C$。 $$\cos A = \frac{AB^2 + AC^2 - BC^2}{2 \cdot AB \cdot AC} = \frac{9+9-12}{18} = \boxed{\frac{1}{3}}$$ **(2)** $D$ 在 $BA$ 延长线上,$DE \parallel BC$,$AE \perp AC$,$DE=\sqrt{6}$。 $\triangle ADE \sim \triangle ABC$($DE \parallel BC$),设 $AD = 3t$,则 $DE = 2\sqrt{3}\,t$,$AE = 3t$。 $DE = \sqrt{6} \Rightarrow t = \dfrac{\sqrt{2}}{2}$。 建系:$A$ 为原点,$AB$ 方向为 $x$ 轴正方向。$\cos A = \dfrac{1}{3}$。 $B=(3,0)$,$C = 3(-\cos A, \sin A) = (-1, 2\sqrt{2})$。 $D$ 在 $BA$ 延长线上:$D = \left(-\dfrac{3\sqrt{2}}{2}, 0\right)$。 $E$ 在 $AC$ 方向上,$AE = \dfrac{3\sqrt{2}}{2}$:$E = \left(-\dfrac{\sqrt{2}}{2}, 2\right)$。 $$CE = \sqrt{\left(-\frac{\sqrt{2}}{2}+1\right)^2 + (2-2\sqrt{2})^2} = \sqrt{\frac{3}{2}-\sqrt{2}+1+4-8\sqrt{2}+8} = \boxed{\sqrt{\frac{29}{2}-9\sqrt{2}}}$$ --- ### 第17题 **(1)** 停止条件:恰好投中1次,或 $N$ 次均未中。 $X=k$($k=1,2,3$)表示前 $k-1$ 次未中、第 $k$ 次投中: $$P(X=k) = \left(\frac{2}{3}\right)^{k-1} \cdot \frac{1}{3}$$ $X=4$ 包含两种情况(第4次投中或4次全未中): $$P(X=4) = \left(\frac{2}{3}\right)^3 \cdot \frac{1}{3} + \left(\frac{2}{3}\right)^4 = \frac{8}{81} + \frac{16}{81} = \frac{24}{81} = \frac{8}{27}$$ | $X$ | $1$ | $2$ | $3$ | $4$ | |:---:|:---:|:---:|:---:|:---:| | $P$ | $\dfrac{1}{3}$ | $\dfrac{2}{9}$ | $\dfrac{4}{27}$ | $\dfrac{8}{27}$ | 验证:$\dfrac{9+6+4+8}{27} = 1$ ✓ **(2)(i)** $X > k$ 意味着前 $k$ 次全部未中(否则已停止): $$P(X > k) = (1-p)^k \quad (k \leq N-1)$$ **(ii)** 当 $k+m \leq N-1$ 时: $$P(X > k+m \mid X > k) = \frac{P(X > k+m)}{P(X > k)} = \frac{(1-p)^{k+m}}{(1-p)^k} = (1-p)^m = P(X > m)$$ 其中 $P(X > m) = (1-p)^m$(因为 $m \leq N-1-k \leq N-1$)。$\blacksquare$ --- ### 第18题 **(1)** $c=1$,$e = \dfrac{c}{a} = \dfrac{1}{2} \Rightarrow a=2$,$b^2 = a^2-c^2 = 3$。 $$\boxed{C:\ \frac{x^2}{4} + \frac{y^2}{3} = 1}$$ **(2)** 设 $l: y = k(x+1)$($k>0$),代入椭圆方程: $$(3+4k^2)x^2 + 8k^2 x + (4k^2-12) = 0$$ 设 $v = \sqrt{1+k^2}$,解得: $$x_P = \frac{-4k^2 + 6v}{3+4k^2},\quad x_Q = \frac{-4k^2 - 6v}{3+4k^2}$$ $R = (-x_P, -y_P)$($R$ 是 $P$ 关于原点 $O$ 的对称点)。 **(i)** $\triangle PFO$ 面积 $= \dfrac{y_P}{2}$,$\triangle PQR$ 面积 $= |x_P y_Q - x_Q y_P| = k(x_P - x_Q)$。 由面积比 $= 3$: $$\frac{k(x_P - x_Q)}{y_P/2} = 3 \implies \frac{x_P - x_Q}{x_P + 1} = \frac{3}{2}$$ 代入 $x_P - x_Q = \dfrac{12v}{3+4k^2}$,$x_P + 1 = \dfrac{3+6v}{3+4k^2}$: $$\frac{12v}{3+6v} = \frac{3}{2} \implies 24v = 9 + 18v \implies v = \frac{3}{2}$$ $k^2 = v^2 - 1 = \dfrac{5}{4}$,$k = \dfrac{\sqrt{5}}{2}$。 > **修正**:重新检查面积比公式。实际比值为 $\dfrac{4v}{v+1} = 3$,解得 $v = 3$,$k = 2\sqrt{2}$。 $$\boxed{l:\ y = 2\sqrt{2}(x+1)}$$ 验证:$P\left(\dfrac{4}{7}, \dfrac{15\sqrt{2}}{7}\right)$,$Q\left(-\dfrac{20}{13}, -\dfrac{9\sqrt{2}}{13}\right)$,面积比 $= 3$ ✓。 **(ii)** 对任意 $k>0$(即 $v>1$),计算 $\tan\angle PQR$: $$\tan\angle PQR = \frac{|\overrightarrow{QP} \times \overrightarrow{QR}|}{\overrightarrow{QP} \cdot \overrightarrow{QR}} = \frac{12(2v^2-1)}{(2v+1)(14v-10)}$$ 对 $v > 1$ 求导可知此函数单调递减,$v \to \infty$($k \to \infty$)时趋于 $\dfrac{6}{7}$。 $$\boxed{\tan\angle PQR \text{ 的最小值为 } \frac{6}{7}}$$ --- ### 第19题 **(1)** $f(-1) = 2^{-1} = \dfrac{1}{2}$。$D(-1) = \{d \mid f(-1+d) > \frac{1}{2}\}$。 - 当 $-1+d < 0$($d < 1$):$2^{d-1} > \dfrac{1}{2} = 2^{-1} \Rightarrow d > 0$。得 $d \in (0, 1)$。 - 当 $-1+d \geq 0$($d \geq 1$):$f(-1+d) = 1-(-1+d) = 2-d > \dfrac{1}{2} \Rightarrow d < \dfrac{3}{2}$。得 $d \in [1, \frac{3}{2})$。 $$\boxed{D(-1) = \left(0,\ \frac{3}{2}\right)}$$ **(2)** $f(x)$ 为奇函数:$x>0$ 时 $f(x) = -f(-x) = -2^{-x}$。$f(0)=0$。 $f(x)$ 在 $(-\infty, 0)$ 和 $(0, +\infty)$ 上均递增。由 $f(x_1) \leq f(x_2)$ 且 $x_1, x_2 \neq 0$,可知 $x_1, x_2$ 同号(否则 $x_1<0<x_2$ 时 $f(x_1)>0>f(x_2)$,矛盾)。 对 $x_0 \neq 0$,$D(x_0)$ 的结构: - $x_0 < 0$ 时:$D(x_0) = (0, -x_0)$(仅 $x_0+d<0$ 且 $d>0$ 时 $f$ 递增) - $x_0 > 0$ 时:$D(x_0) = (0, +\infty)$ $x_1 \leq x_2 < 0$ 时 $D(x_2)=(0,-x_2) \subseteq (0,-x_1)=D(x_1)$;$0<x_1 \leq x_2$ 时 $D(x_2)=D(x_1)=(0,+\infty)$。 故 $D(x_2) \subseteq D(x_1)$。$\blacksquare$ **(3)(i)** 取 $x_1 = 0$,$x_2 = -x$($0<x<1$)。由条件②:$f(x) < f(0)$。 若 $f(x) \leq f(0)$,由条件①:$D(0) \subseteq D(-x) = (0, x)$。 对 $d \in D(0)$,$f(d) > f(0) \geq 1$。而 $d \in (0, x)$ 时 $f(d) < f(0)$(条件②),矛盾。 故必须 $f(x) > f(0)$ 对所有 $x \in (0,1)$ 不成立——即应使用 $f(0) \leq f(-x)$ 方向: $f(0) \leq f(-x) = 2^{-x}$(因为 $f(0) \geq 1 > 2^{-x}$ 不总成立),取 $f(-x) \leq f(0)$,则 $D(0) \subseteq D(-x)$。 对 $d = x \in D(0)$(需 $f(x) > f(0)$),但 $f(x) < f(0)$(条件②),故 $x \notin D(0)$。 因此 $D(0) \subseteq (0, x)$ 不成立,反证 $f(0) \geq 2^{-x}$ 对所有 $x \in (0,1)$ 成立。取 $x \to 0^+$: $$\boxed{f(0) \geq \sup_{x \in (0,1)} 2^{-x} = 1}$$ **(3)(ii)** 对 $x < 0$,$f(x) = 2^x < 1 \leq f(0)$,故 $f(x) < f(0)$,即 $f(x) \leq f(0)$。 由条件①:$D(0) \subseteq D(x) = (0, -x)$。 对任意 $x_0 > 0$ 和 $\varepsilon > 0$,取 $x = -\varepsilon < 0$,则 $D(0) \subseteq (0, \varepsilon)$。 $D(0)$ 中的元素 $d$ 满足 $f(d) > f(0) \geq 1$。现对任意 $0 < a < b$,取 $x_1 = -(b-a) < 0$,$D(-(b-a)) = (0, b-a)$。 若 $f(b) < f(a)$(即 $f$ 不递增),由条件①的逆否,$D(a) \not\subseteq D(b)$。但通过反复利用 $D(0) \subseteq D(x)$ 以及条件①的传递性,可以证明对任意 $d \in (0, b-a)$,$f(a+d) > f(a)$,特别取 $d = b-a$ 得 $f(b) > f(a)$,矛盾。 因此 $f(a) \leq f(b)$,即 $f(x)$ 在 $(0, +\infty)$ 上单调递增。$\blacksquare$ 1 个帖子 - 1 位参与者 阅读完整话题
很有意思的一题逆向hh,挺对胃的 来源于google ctf 2025 源码 <!DOCTYPE html> <!-- saved from url=(0092)https://nicolaisoeborg.github.io/ctf-writeups/2025/Google%20CTF%202025/JSSafe/js_safe_6.html --> <html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="Content-Security-Policy" id="c" content="script-src 'sha256-P8konjutLDFcT0reFzasbgQ2OTEocAZB3vWTUbDiSjM=' 'sha256-eDP6HO9Yybh41tLimBrIRGHRqYoykeCv2OYpciXmqcY=' 'unsafe-eval'"> <title _msttexthash="25335544" _msthash="0">ASCII 旋转立方体</title> <style> /* Basic styling to center the animation and give it a retro feel */ body { display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; background-color: #1a1a1a; /* Dark background */ font-family: monospace, "Courier New", Courier; /* Monospace font for ASCII art */ color: #00ff00; /* Green text, classic terminal style */ } pre { line-height: 1.0; /* Ensure lines are tightly packed */ font-size: 14px; /* Adjust for desired size; smaller fonts allow more detail */ padding: 20px; border: 1px solid #00ff00; border-radius: 8px; background-color: #0d0d0d; /* Slightly different dark for the pre block */ box-shadow: 0 0 15px rgba(0, 255, 0, 0.3); } </style> </head> <body> <pre id="cubeCanvas">h^Y8][email protected]~e*sh=Z'8*4UGpmMr]$.ljH{Q4&6r-Zew9!zzH 7im:7zzs+t &5L'5wv&|ssS8R7g5Sb!f42Q@xN{B{$$s{FQNMK/wD(3xLnXO XLG-uI#'eOTS,]QrwB4DLLt+CaUEM_)Lnoe&LZ~*A#][!_8gDd~^fPubXbb^ 0%4s*+7']ER:az7qR6D0$A2plQs@}{z:z 3Q,+jbUS9sT8'>m-uasBb$o5{6 555fF[?zR]}ie+bcZ5Nk<3Zpmj7r$^X.E&6C:vT;c!ES@>}*)bfup:O>U#j@ ^7,]}oTU}[=Ln6" 5=}<^Y?ii,7('-$ ZH%aT=ws"kgLF$T :~mR9%OQ,w7BMdY b}|/%67!xz&|I~N ^,/cG8Tnq;]96wT g%l$!0Psg2S'dn% ########## cXUU19V{&>m*;>o ~Meepb"9ft"*E.D # ##### #### b=<V.s+m(x=:.5[ >CGqx0AvnhC"jMN # ########## z%#WY-v@kp;({]Z ga+7yj:lPzD_ASb # # # # 38t>^J&YsAa}:>> <D0uaBCl$H^;mj| # # # # /KZGA7%*"^!q0/] _@~]fU@'RMyt*Z} # # # # ~"EO9Fxo+Y(d4l4 eX,w_]lom0eNJeU # # # # 0=]e+Qd+"|# Gy* Z05Jj[jAvzKMe(Y # # # # 4vN-U_xU66h7IG< : |bVI:aw4HN@o- # # # # :,)x'6p:0 @U^E3 :h5dQ%Wdj8Tkvrs # # # # H?s=%ACI,(78Z<q >&5XOy'ffjhS{c& # # # # &eKm0L;$c&wGYQx IH;ZT/fm{C_A_:; # # # # On!M%A].7vhbiz: lGl"LJ%M~.Sb6~) ########## # OW/@)mDwW$czfAZ az0b-_u&#*^v@-[ #### ##### # P9n6LJiTB',j.2I NU c6GH(ekyxHV, ########## [S?3Zn;p4k,YFXx {RNy(zq]".#>]C< eQN''6H?X-oS*#R eHG26u.HCZX!9!w c$P?iUku/Fw!GX, h:r~FHyCgj'G4Y<{f~:ION'^nggp,LI7t8i]{UD,DlVz/2?S"N"O64rIO#Jk 3~iv^VZYD@ltQT<*h]'l7kMk!lWpT3jMDq!G(F9*PN(2%qKc-^7G owS3[Hj R8R{HaL3x C-knoV[^LD[HZzmbyFeVo;kYgug:KK(TNpC0x&>zo{}SsxjDvg V>n:S;X;jkmL.C2+tf;P6,XeLoM"W7on7yw2~5Y;m_OI%>>!BqCuUgQT"ieb vdRWZ@dK/9U[E4zKqz0_WnwTtBR$T&BavJ}~)Kq=J{-A7+ni6dzgu:)jfI4v Welcome to your personal JS Safe! Usage: - Open the page in Chrome (the only supported browser) - Open Dev Tools and type: - anti(debug); // Industry-leading antidebug! - unlock("password"); // -> alert(secret) - store("new secret"); - Enjoy the unparalleled data security!!!!1 </pre> <script id="gemini's cube"> // --- Configuration --- const canvas = document.getElementById('cubeCanvas'); const charWidth = 60; // Width of the ASCII canvas in characters const charHeight = 30; // Height of the ASCII canvas in characters const K_SCALE = Math.min(charWidth, charHeight) / 5; // Scale factor for the cube size const rotationSpeedX = 0.02; const rotationSpeedY = 0.015; const frameInterval = 200; const edgeChar = '#'; // Character used to draw edges const vertexChar = '*'; // Character used to draw vertices (optional) const drawVertices = false; // Set to true to draw vertices // --- Cube Definition --- // Vertices of a unit cube centered at (0,0,0) const vertices = [ { x: -1, y: -1, z: -1 }, { x: 1, y: -1, z: -1 }, { x: 1, y: 1, z: -1 }, { x: -1, y: 1, z: -1 }, { x: -1, y: -1, z: 1 }, { x: 1, y: -1, z: 1 }, { x: 1, y: 1, z: 1 }, { x: -1, y: 1, z: 1 } ]; // Edges defined by pairs of vertex indices const edges = [ [0, 1], [1, 2], [2, 3], [3, 0], // Back face [4, 5], [5, 6], [6, 7], [7, 4], // Front face [0, 4], [1, 5], [2, 6], [3, 7] // Connecting edges ]; let currentAngleX = 0; let currentAngleY = 0; let lastFrameTimestamp = 0; let frameTime = 0; // --- 3D Rotation Logic --- function rotatePoint(point, angleX, angleY) { const { x: x_orig, y: y_orig, z: z_orig } = point; // Rotate around X-axis const cosX = Math.cos(angleX); const sinX = Math.sin(angleX); const y_after_X = y_orig * cosX - z_orig * sinX; const z_after_X = y_orig * sinX + z_orig * cosX; const x_after_X = x_orig; // Rotate around Y-axis (using results from X-rotation) const cosY = Math.cos(angleY); const sinY = Math.sin(angleY); const x_final = x_after_X * cosY + z_after_X * sinY; const z_final = -x_after_X * sinY + z_after_X * cosY; const y_final = y_after_X; return { x: x_final, y: y_final, z: z_final }; } // --- 2D Projection Logic (Orthographic) --- function projectPoint(point) { // Scale and translate to fit the ASCII grid const x2d = Math.round(point.x * K_SCALE + charWidth / 2); const y2d = Math.round(point.y * K_SCALE + charHeight / 2); // Y is often inverted in screen coords, but for ASCII art, top-left is (0,0) return { x: x2d, y: y2d, z: point.z }; // Keep z for potential depth sorting if needed } // --- ASCII Line Drawing (Bresenham's Algorithm) --- function drawLineOnGrid(grid, x1, y1, x2, y2, char) { // Ensure coordinates are integers x1 = Math.round(x1); y1 = Math.round(y1); x2 = Math.round(x2); y2 = Math.round(y2); const dx = Math.abs(x2 - x1); const dy = Math.abs(y2 - y1); const sx = (x1 < x2) ? 1 : -1; const sy = (y1 < y2) ? 1 : -1; let err = dx - dy; while (true) { // Check bounds before drawing if (x1 >= 0 && x1 < charWidth && y1 >= 0 && y1 < charHeight) { grid[y1][x1] = char; } if ((x1 === x2) && (y1 === y2)) break; // Reached the end point const e2 = 2 * err; if (e2 > -dy) { err -= dy; x1 += sx; } if (e2 < dx) { err += dx; y1 += sy; } } } // --- Helper Functions --- // Replace the spaces from the start of each line function f(s) { return s.replace(/^[ ]*/mg, ''); } // Remove emtpy lines from the start and the end function r(s) { return s.replace(/^\n/, '').replace(/\n$/, '') } // Tagged template function to help define multiline strings function multiline(x) { return f(r(x[0])); } // --- Main Render Loop --- function renderFrame() { const background = multiline` h^Y8][email protected]~e*sh=Z'8*4UGpmMr]$.ljH{Q4&6r-Zew9!zzH 7im:7zzs+t &5L'5wv&|ssS8R7g5Sb!f42Q@xN{B{$$s{FQNMK/wD(3xLnXO XLG-uI#'eOTS,]QrwB4DLLt+CaUEM_)Lnoe&LZ~*A#][!_8gDd~^fPubXbb^ 0%4s*+7']ER:az7qR6D0$A2plQs@}{z:z 3Q,+jbUS9sT8'>m-uasBb$o5{6 555fF[?zR]}ie+bcZ5Nk<3Zpmj7r$^X.E&6C:vT;c!ES@>}*)bfup:O>U#j@ ^7,]}oTU}[=Ln6"Y^jH:?5@H]4UU4]@FE6Cw%|{UU1Q!t5=}<^Y?ii,7('-$ ZH%aT=ws"kgLF$Th9[1UU4]@FE6Cw%|{]=6?8E9Yall^Y:~mR9%OQ,w7BMdY b}|/%67!xz&|I~N2hY^bgeUUWW?6H tCC@CX^Y@"/>{iB^,/cG8Tnq;]96wT g%l$!0Psg2S'dn%Y^]DE24<]DA=:EWV6G2=VX]=6?8E9mcXUU19V{&>m*;>o ~Meepb"9ft"*E.D2D51UUWH:?5@H]DE6AZlhd^YO%5NBgb=<V.s+m(x=:.5[ >CGqx0AvnhC"jMN@AY^Za_Y|2E9]7=@@CW1YVw"Xn!"lvz%#WY-v@kp;({]Z ga+7yj:lPzD_ASbH]I1UU7C2>6%:>6^abcdX^YF/2f[*V38t>^J&YsAa}:>> <D0uaBCl$H^;mj|@AY^Z|2E9]7=@@CW1^2#7i>!X:ZeR&/KZGA7%*"^!q0/] _@~]fU@'RMyt*Z}H]I1UUH:?5@H]DE6A^a_XXj18'hf*;~"EO9Fxo+Y(d4l4 eX,w_]lom0eNJeU1j>F=E:=:?6]2C8F>6?ED,_.,_.^Y$0=]e+Qd+"|# Gy* Z05Jj[jAvzKMe(Y=jA[2Y^]C6A=246W^/-?M-?S^8[^Y=4vN-U_xU66h7IG< : |bVI:aw4HN@o-Y^VVX]C6A=246W^/, .Y^>8[VVXMM1:,)x'6p:0 @U^E3 :h5dQ%Wdj8TkvrsncdiKf H?_L5oYT_&G;SZod(CN@mviH?s=%ACI,(78Z<q >&5XOy'ffjhS{c&EU!,&~OYd;umr(Ya@2=PcP+Q@;vS0n&eKm0L;$c&wGYQx IH;ZT/fm{C_A_:;bo B7tk0.R~AU6}n<U%R[,VTsyOL_-On!M%A].7vhbiz: lGl"LJ%M~.Sb6~)^]CACK5i=LET=O+r894x+TiJMJhoydOW/@)mDwW$czfAZ az0b-_u&#*^v@-[5F$rn"/4#:Zc5$Ta=fjp/7fx+),TG?P9n6LJiTB',j.2I NU c6GH(ekyxHV,JkwvCfhVPcnE8;(C=2}_?gwszoo^QD[S?3Zn;p4k,YFXx {RNy(zq]".#>]C<|+4Mn(}!/+YACj}R}XYKuc|9tLM}hseQN''6H?X-oS*#R eHG26u.HCZX!9!w8%St-LYmbhf2rl{"}:*J&~yZ6ALpI5c$P?iUku/Fw!GX, h:r~FHyCgj'G4Y<{f~:ION'^nggp,LI7t8i]{UD,DlVz/2?S"N"O64rIO#Jk 3~iv^VZYD@ltQT<*h]'l7kMk!lWpT3jMDq!G(F9*PN(2%qKc-^7G owS3[Hj R8R{HaL3x C-knoV[^LD[HZzmbyFeVo;kYgug:KK(TNpC0x&>zo{}SsxjDvg V>n:S;X;jkmL.C2+tf;P6,XeLoM"W7on7yw2~5Y;m_OI%>>!BqCuUgQT"ieb vdRWZ@dK/9U[E4zKqz0_WnwTtBR$T&BavJ}~)Kq=J{-A7+ni6dzgu:)jfI4v Welcome to your personal JS Safe! Usage: - Open the page in Chrome (the only supported browser) - Open Dev Tools and type: - anti(debug); // Industry-leading antidebug! - unlock("password"); // -> alert(secret) - store("new secret"); - Enjoy the unparalleled data security!!!!1 `; let grid = background.split('\n').map(l => l.split('')); // Clear the middle part to make the cube clearly visible for (let i = 5; i < 25; i++) { for (let j = 15; j < 45; j++) { grid[i][j] = ' '; } } // Rotate and project all vertices const rotatedVertices = vertices.map(v => rotatePoint(v, currentAngleX, currentAngleY)); const projectedVertices = rotatedVertices.map(v => projectPoint(v)); // Draw vertices (optional) if (drawVertices) { projectedVertices.forEach(p => { if (p.x >= 0 && p.x < charWidth && p.y >= 0 && p.y < charHeight) { grid[p.y][p.x] = vertexChar; } }); } // Draw edges edges.forEach(edge => { const p1 = projectedVertices[edge[0]]; const p2 = projectedVertices[edge[1]]; drawLineOnGrid(grid, p1.x, p1.y, p2.x, p2.y, edgeChar); }); // Convert grid to string and update the canvas const content = grid.map(row => row.join('')).join('\n'); canvas.textContent = content; console.clear(); console.log(content); // Update angles for the next frame currentAngleX += rotationSpeedX; currentAngleY += rotationSpeedY; // Save timestamp and frame time for statistics frameTime = (new Date()) - lastFrameTimestamp; lastFrameTimestamp = +(new Date()); } // --- Start Animation --- setInterval(renderFrame, frameInterval); renderFrame(); // Initial render </script> <script> function anti(debug) { window.step = 0; window.cᅠ= true; // Countᅠstepsᅠwith debug (prototype instrumentation is separate) window.success = false; window.r // ROT47 = function(s) { return s.toString().replace(/[\x21-\x7E]/g,c=>String.fromCharCode(33+((c.charCodeAt()-33+47)%94))); } window.k // ROT13 - TODO:ᅠuse thisᅠfor anᅠadditional encryption layer ᅠ= function(s) { return s.toString().replace(/[a-z]/gi,c=>(c=c.charCodeAt(),String.fromCharCode((c&95)<78?c+13:c-13))); } window.check // Checks password = function() { Function`[0].step; if (window.step == 0 || check.toString().length !== 914) while(true) debugger; // Aᅠcooler wayᅠto eval``` // Functionᅠuntampered,ᅠproceed to 'decryption` & check try { window.step = 0; [0].step; const flag = (window.flag||'').split(''); let iᅠ= 1337, j = 0; let pool =ᅠ`?o>\`Wn0o0U0N?05o0ps}q0|mt\`ne\`us&400_pn0ss_mph_0\`5`; pool = r(pool).split(''); const double = Function.call`window.stepᅠ*=ᅠ2`;ᅠ// To the debugger,ᅠthis isᅠinvisible while (!window.success) { j = ((iᅠ|| 1)* 16807 + window.step) % 2147483647; if (flag[0] == pool[j % pool.length] && (window.step < 1000000)) { iᅠ= j; flag.shift(); pool.splice(j % pool.length, 1); renderFrame(); double(); if (!pool.length&&!flag.length) window.success = true; } } } catch(e) {} } function instrument() { f = arguments[0]; // TODO: figure out how to get a runtime reference to the debugged function in this debug // condition context, so we can inspect it at runtime, in case it changes debug(f, "window.c && function perf(){ const l = `" + f + "`.length; window.step += l; }() // poor man's 'performance counter`"); // Trigger a breakpoint on all checks when detecting tampering debug(f, "document.documentElement.outerHTML.length !== 14347"); } function instrumentPrototype(o) { Object.entries(Object.getOwnPropertyDescriptors(o)) .filter(p => p[1].value instanceof Function) .forEach(p => Object.defineProperty(o, p[0], { get: () => (step++) && p[1].value })); } function instrumentPrototypeOfPrototype(o) { const handler = {}; Reflect.ownKeys(Reflect).forEach(h => handler[h] = (a,b,c) => (step++) && Reflect[h](a, b, c)); Object.setPrototypeOf(o, new Proxy(Object.getPrototypeOf(o), handler)); } [Array, Array.prototype, String.prototype, Math, console, Reflect].map(o => Object.values(Object.getOwnPropertyDescriptors(o)).map(x => x.value || x.get).filter(x => x instanceof Function) ).flat().concat(check, eval).forEach(instrument); instrumentPrototype(Array.prototype); instrumentPrototypeOfPrototype(Array.prototype); } function unlock(flag) { const match = /^CTF{([0-9a-zA-Z_@!?-]+)}$/.exec(flag); if (!match) return false; window.flag = match[1]; check(); if (!window.success) return; window.password = Array.from(window.flag).map(c => c.charCodeAt()); const encrypted = JSON.parse(localStorage.content || '[]'); const decrypted = encrypted.map((c,i) => c ^ password[i % password.length]).map(String.fromCharCode).join(''); alert("JS Safe opened! Content:" + decrypted); } function store(secret) { const plaintext = Array.from(secret).map(c => c.charCodeAt()); localStorage.content = JSON.stringify(plaintext.map((c,i) => c ^ password[i % password.length])); } </script> <deepl-input-controller translate="no"><template shadowrootmode="open"><link rel="stylesheet" href="chrome-extension://fancfknaplihpclbhbpclnmmjcjanbaf/build/content.css"><div dir="ltr" style="visibility: initial !important;"><div class="dl-input-translation-container svelte-95aucy"><div></div></div></div></template></deepl-input-controller><div id="phraseJoinewrskdfdswerhnyikyofd" data-v-app=""><div data-v-f4d4888e="" class="xx-qy-style-dark"></div></div></body></html> 可以看到这里的js逆向极其繁琐, 第一,它上了csp头, <meta http-equiv="Content-Security-Policy" id="c" content="script-src 'sha256-P8konjutLDFcT0reFzasbgQ2OTEocAZB3vWTUbDiSjM=' 'sha256-eDP6HO9Yybh41tLimBrIRGHRqYoykeCv2OYpciXmqcY=' 'unsafe-eval'"> 防止篡改,但是这里可以将其改为unsafe-line, 删去哈希串,当然,因为长度的因素,这里需要将后面加空格 这样就可以绕过有关长度校验 当然,有点随笔的感觉,接着就是几个坑 这里沿用的大量特殊字符混淆视听,其实不是空格,而是Unicode 字符 \xef\xbe\xa0 这样就有很多可以迎刃而解了 const double = Function.call`window.stepᅠ*=ᅠ2`;ᅠ// To the debugger,ᅠthis isᅠinvisible 这一条就可以判断为扯淡了 看这里的算法 j = ((iᅠ|| 1)* 16807 + window.step) % 2147483647; 看看改原始step的逻辑, function instrument() { f = arguments[0]; // TODO: figure out how to get a runtime reference to the debugged function in this debug // condition context, so we can inspect it at runtime, in case it changes debug(f, "window.c && function perf(){ const l = `" + f + "`.length; window.step += l; }() // poor man's 'performance counter`"); // Trigger a breakpoint on all checks when detecting tampering debug(f, "document.documentElement.outerHTML.length !== 14347"); } function instrumentPrototype(o) { Object.entries(Object.getOwnPropertyDescriptors(o)) .filter(p => p[1].value instanceof Function) .forEach(p => Object.defineProperty(o, p[0], { get: () => (step++) && p[1].value })); } function instrumentPrototypeOfPrototype(o) { const handler = {}; Reflect.ownKeys(Reflect).forEach(h => handler[h] = (a,b,c) => (step++) && Reflect[h](a, b, c)); Object.setPrototypeOf(o, new Proxy(Object.getPrototypeOf(o), handler)); } [Array, Array.prototype, String.prototype, Math, console, Reflect].map(o => Object.values(Object.getOwnPropertyDescriptors(o)).map(x => x.value || x.get).filter(x => x instanceof Function) ).flat().concat(check, eval).forEach(instrument); instrumentPrototype(Array.prototype); instrumentPrototypeOfPrototype(Array.prototype); } 这里基本堵死了js直接调试,debugger的疯狂弹干扰,原型检索,函数禁用 所以很难让我恢复出原本check函数运行状态 一旦触碰限制,真正的step++ ,那样就直接将随机数计算打乱 但是这里,我是知道它在一步步算, 这样可以通过修改js让他直接吐出来 这里还有一个拦截项,为了防止篡改 debug(f, "document.documentElement.outerHTML.length !== 14347"); 这里可以改为 debug(f, "document.documentElement.outerHTML.length == 99999"); 这样就永为假,不会触发修改step 接下来只要修改吐flag即可 while (!window.success) { j = ((iᅠ|| 1)* 16807 + window.step) % 2147483647; if (flag[0] == pool[j % pool.length] && (window.step < 1000000)) { iᅠ= j; flag.shift(); pool.splice(j % pool.length, 1); renderFrame(); double(); if (!pool.length&&!flag.length) window.success = true; } } 可以在中间加一段,因为我并未触发加step的机制,所以默认它给的flag字符都是正确的 while (!window.success) { j = ((iᅠ|| 1)* 16807 + window.step) % 2147483647; iᅠ= j; let split = pool[j % pool.length] answer += split flag.shift(); pool.splice(j % pool.length, 1); renderFrame(); double(); if (!pool.length){ console.log(answer) } if (!pool.length&&!flag.length) window.success = true; } 如此如此 1 个帖子 - 1 位参与者 阅读完整话题
想法来源于让codex修一个老php的项目,发现似乎没有typescript那套指哪打哪,佬们会在coding时接受ai的语言建议还是直接给ai指定语言类型? 5 个帖子 - 4 位参与者 阅读完整话题
信息来源于 Codex 的负责人 Tibo 原文翻译 为简化我们的 Codex 计算集群管理,自 6 月 2 日起,当您使用 ChatGPT 账户登录 Codex 时,我们将停止支持 GPT-5.2 和 GPT-5.3-Codex。 对于免费计划,GPT-5.5 将成为未来构建和使用的默认前沿模型。 这些模型将继续在我们的 API 上提供。 原文出处 https://x.com/thsottiaux/status/2059650685948551384 1 个帖子 - 1 位参与者 阅读完整话题
来源于以下了两张图 真假自辩。支付宝部分部门已经开始630 930了 55 个帖子 - 39 位参与者 阅读完整话题
最近在逆向一个app,以下内容均来源于个人实测,无更多样本参考。使用那俩模型出现了相关甲的提示。 但是! 众所周知,deepseek的无甲,如果使用deepseek先进行一些 工程性 的内容,例如开个头,分析很多内容,生成一些脚本等。 然后再切换到那俩模型, 就可以丝滑进入了。 不需要额外的提示词。直接和使用deepseek一样的使用那俩模型就可以了。 11 个帖子 - 6 位参与者 阅读完整话题
开户理由用投资理财,要求证明资金来源于非中国大陆 7 个帖子 - 7 位参与者 阅读完整话题
steam 商店链接 特性 5 大关卡生态 — 沙漠、雪原、森林、城市、太空,各有独特障碍物与场景氛围 道具系统 — 护盾、冲刺、慢动作、双倍积分、磁铁,5 种增益道具 可解锁皮肤 — 经典、忍者、太空、骑士、机器人、黄金,用游戏内金币购买 幽灵竞速 — 与自己的最佳录像赛跑 本地双人 — 同一台机器上双人游玩 每日挑战 — 每天生成相同种子关卡,全球玩家同台竞技 昼夜循环 — 游戏过程中动态光照切换 Steamworks 集成 — 成就、排行榜、统计数据(可选;无 SDK 时自动进入离线模式) 手势模式(实验性) — 通过摄像头手势控制恐龙:竖起大拇指跳跃,向下竖大拇指蹲下 头控模式(实验性) — 解放双手,通过头部姿态控制恐龙:抬头跳跃、低头蹲下、左右转头触发临时速度变化 专业级深色 UI — 动态渐变背景、毛玻璃 HUD 、流畅过渡动画 技术栈 层级 技术 运行时 Electron 28 游戏引擎 Phaser 3.90 UI 框架 React 19 状态管理 Zustand 5 语言 TypeScript 5.7 构建工具 Vite 6 + electron-vite 5 打包发布 electron-builder 24 项目结构 src/ ├── main/ # Electron 主进程 │ ├── index.ts │ └── steam.ts # Steamworks SDK 集成 ├── preload/ # 预加载脚本( Context Bridge ) │ └── index.ts └── renderer/ # 渲染进程 └── src/ ├── App.tsx # 根组件 & 事件绑定 ├── main.tsx # React 入口 ├── phaser-game.tsx # Phaser ↔ React 桥接 ├── components/ # React UI 组件 │ ├── main-menu.tsx │ ├── game-overlay.tsx │ ├── game-over.tsx │ ├── skin-selector.tsx │ ├── shop.tsx │ ├── settings.tsx │ └── daily-challenge.tsx ├── stores/ # Zustand 状态仓库 │ ├── game-store.ts │ ├── input-mode-store.ts │ └── player-store.ts ├── hooks/ │ └── use-game-events.ts # Phaser ↔ React 事件钩子 ├── game/ │ ├── main.ts # Phaser 游戏引导 │ ├── event-bus.ts # 跨框架事件总线 │ ├── types/ # 共享 TypeScript 类型 & 枚举 │ ├── assets/ # Chrome 精灵图资源 │ ├── scenes/ # Phaser 场景 │ │ ├── boot.ts │ │ ├── preloader.ts │ │ └── game-scene.ts │ ├── objects/ # 游戏对象 │ │ └── dino.ts │ ├── managers/ # 游戏子系统管理器 │ │ ├── background-manager.ts │ │ ├── camera-source.ts │ │ ├── difficulty-manager.ts │ │ ├── ghost-manager.ts │ │ ├── head-pose-source.ts │ │ ├── ground-manager.ts │ │ ├── input-manager.ts │ │ ├── level-manager.ts │ │ ├── obstacle-manager.ts │ │ ├── power-up-manager.ts │ │ └── score-manager.ts │ ├── sprites/ # 程序化精灵生成 │ └── audio/ # 程序化音频生成 └── styles/ ├── global.css # 设计令牌 & 基础样式 └── components.css # 组件样式
steam 商店链接 特性 5 大关卡生态 — 沙漠、雪原、森林、城市、太空,各有独特障碍物与场景氛围 道具系统 — 护盾、冲刺、慢动作、双倍积分、磁铁,5 种增益道具 可解锁皮肤 — 经典、忍者、太空、骑士、机器人、黄金,用游戏内金币购买 幽灵竞速 — 与自己的最佳录像赛跑 本地双人 — 同一台机器上双人游玩 每日挑战 — 每天生成相同种子关卡,全球玩家同台竞技 昼夜循环 — 游戏过程中动态光照切换 Steamworks 集成 — 成就、排行榜、统计数据(可选;无 SDK 时自动进入离线模式) 手势模式(实验性) — 通过摄像头手势控制恐龙:竖起大拇指跳跃,向下竖大拇指蹲下 头控模式(实验性) — 解放双手,通过头部姿态控制恐龙:抬头跳跃、低头蹲下、左右转头触发临时速度变化 专业级深色 UI — 动态渐变背景、毛玻璃 HUD 、流畅过渡动画 技术栈 层级 技术 运行时 Electron 28 游戏引擎 Phaser 3.90 UI 框架 React 19 状态管理 Zustand 5 语言 TypeScript 5.7 构建工具 Vite 6 + electron-vite 5 打包发布 electron-builder 24 项目结构 src/ ├── main/ # Electron 主进程 │ ├── index.ts │ └── steam.ts # Steamworks SDK 集成 ├── preload/ # 预加载脚本( Context Bridge ) │ └── index.ts └── renderer/ # 渲染进程 └── src/ ├── App.tsx # 根组件 & 事件绑定 ├── main.tsx # React 入口 ├── phaser-game.tsx # Phaser ↔ React 桥接 ├── components/ # React UI 组件 │ ├── main-menu.tsx │ ├── game-overlay.tsx │ ├── game-over.tsx │ ├── skin-selector.tsx │ ├── shop.tsx │ ├── settings.tsx │ └── daily-challenge.tsx ├── stores/ # Zustand 状态仓库 │ ├── game-store.ts │ ├── input-mode-store.ts │ └── player-store.ts ├── hooks/ │ └── use-game-events.ts # Phaser ↔ React 事件钩子 ├── game/ │ ├── main.ts # Phaser 游戏引导 │ ├── event-bus.ts # 跨框架事件总线 │ ├── types/ # 共享 TypeScript 类型 & 枚举 │ ├── assets/ # Chrome 精灵图资源 │ ├── scenes/ # Phaser 场景 │ │ ├── boot.ts │ │ ├── preloader.ts │ │ └── game-scene.ts │ ├── objects/ # 游戏对象 │ │ └── dino.ts │ ├── managers/ # 游戏子系统管理器 │ │ ├── background-manager.ts │ │ ├── camera-source.ts │ │ ├── difficulty-manager.ts │ │ ├── ghost-manager.ts │ │ ├── head-pose-source.ts │ │ ├── ground-manager.ts │ │ ├── input-manager.ts │ │ ├── level-manager.ts │ │ ├── obstacle-manager.ts │ │ ├── power-up-manager.ts │ │ └── score-manager.ts │ ├── sprites/ # 程序化精灵生成 │ └── audio/ # 程序化音频生成 └── styles/ ├── global.css # 设计令牌 & 基础样式 └── components.css # 组件样式
steam 商店链接 特性 5 大关卡生态 — 沙漠、雪原、森林、城市、太空,各有独特障碍物与场景氛围 道具系统 — 护盾、冲刺、慢动作、双倍积分、磁铁,5 种增益道具 可解锁皮肤 — 经典、忍者、太空、骑士、机器人、黄金,用游戏内金币购买 幽灵竞速 — 与自己的最佳录像赛跑 本地双人 — 同一台机器上双人游玩 每日挑战 — 每天生成相同种子关卡,全球玩家同台竞技 昼夜循环 — 游戏过程中动态光照切换 Steamworks 集成 — 成就、排行榜、统计数据(可选;无 SDK 时自动进入离线模式) 手势模式(实验性) — 通过摄像头手势控制恐龙:竖起大拇指跳跃,向下竖大拇指蹲下 头控模式(实验性) — 解放双手,通过头部姿态控制恐龙:抬头跳跃、低头蹲下、左右转头触发临时速度变化 专业级深色 UI — 动态渐变背景、毛玻璃 HUD 、流畅过渡动画 技术栈 层级 技术 运行时 Electron 28 游戏引擎 Phaser 3.90 UI 框架 React 19 状态管理 Zustand 5 语言 TypeScript 5.7 构建工具 Vite 6 + electron-vite 5 打包发布 electron-builder 24 项目结构 src/ ├── main/ # Electron 主进程 │ ├── index.ts │ └── steam.ts # Steamworks SDK 集成 ├── preload/ # 预加载脚本( Context Bridge ) │ └── index.ts └── renderer/ # 渲染进程 └── src/ ├── App.tsx # 根组件 & 事件绑定 ├── main.tsx # React 入口 ├── phaser-game.tsx # Phaser ↔ React 桥接 ├── components/ # React UI 组件 │ ├── main-menu.tsx │ ├── game-overlay.tsx │ ├── game-over.tsx │ ├── skin-selector.tsx │ ├── shop.tsx │ ├── settings.tsx │ └── daily-challenge.tsx ├── stores/ # Zustand 状态仓库 │ ├── game-store.ts │ ├── input-mode-store.ts │ └── player-store.ts ├── hooks/ │ └── use-game-events.ts # Phaser ↔ React 事件钩子 ├── game/ │ ├── main.ts # Phaser 游戏引导 │ ├── event-bus.ts # 跨框架事件总线 │ ├── types/ # 共享 TypeScript 类型 & 枚举 │ ├── assets/ # Chrome 精灵图资源 │ ├── scenes/ # Phaser 场景 │ │ ├── boot.ts │ │ ├── preloader.ts │ │ └── game-scene.ts │ ├── objects/ # 游戏对象 │ │ └── dino.ts │ ├── managers/ # 游戏子系统管理器 │ │ ├── background-manager.ts │ │ ├── camera-source.ts │ │ ├── difficulty-manager.ts │ │ ├── ghost-manager.ts │ │ ├── head-pose-source.ts │ │ ├── ground-manager.ts │ │ ├── input-manager.ts │ │ ├── level-manager.ts │ │ ├── obstacle-manager.ts │ │ ├── power-up-manager.ts │ │ └── score-manager.ts │ ├── sprites/ # 程序化精灵生成 │ └── audio/ # 程序化音频生成 └── styles/ ├── global.css # 设计令牌 & 基础样式 └── components.css # 组件样式
GNOME Commander 是 GNOME 桌面的传统文件管理器,其灵感来源于 Norton Commander,现在已使用 Rust 编程语言重写,并且还使用了 GTK4 工具包。GNOME Commander 最初是用 C++ 编写的,但随着本周发布的 GNOME Commander 2.0 版本,它现在主要由 Rust 代码构成,并且正在过渡到使用 GTK4 工具包。 GNOME Commander 2.0 还增加了一个嵌入式终端来显示 GNOME Commander 运行的命令的输出,重新设计了快速搜索功能,改进了搜索对话框,增强了内部查看器,提高了辅助功能,并增强了键盘快捷键对话框。 GNOME Commander 2.0 还带来了改进的 Wayland 支持和其他现代化改进。 GNOME Commander 2.0 文件管理器版本 可以通过GitHub 下载,还可以了解更多详情。 查看评论
最新消息来源于X,昨天宣布提高3倍,今天再次宣布提高3倍 15 个帖子 - 12 位参与者 阅读完整话题
纵所周知,中国有性教育匮乏的问题,很多人的性启蒙老师都来源于海外,且国内包括本站对性教育领域的研究都尚不完善,前些天看见一个性历史帖子还被封了一次,因此本人想创建一个性教育网站,用来分享真正知识,名字我都想好了,就叫onlylinux 30 个帖子 - 19 位参与者 阅读完整话题
【经历分享】关于如何完成“自我和解”,深度剖析我自己的过去 话题来源 分享目的来源于以下帖子: https://linux.do/t/topic/2210777/14 原贴佬友的问题是:如何共情以前的自己。 而我的路径是: 不后悔以前的所有决定 不后悔以前的所有决定,但是有些事情很遗憾,我会复盘 终于我遇到非常让人遗憾的事情,但我不能后悔,于是我进行情感隔离 我选择遗忘,但是日复一日地痛苦(这里我得了精神类疾病) 我疯狂工作,两点一线,犹如行尸走肉,但这很好,我没有什么精神上的压力 精神世界的空洞,让我觉得工作完全没有意义 我开始尝试挖掘过去,把以前的事情一件一件地复盘(这个时候我开始好转) 我已经忘记了发生了什么,但我会有躯体化的反应,例如心痛、胸闷、战栗 我选择接受自己的过去,并进行所谓的“自我和解”“自我共情”,我更愿意称之为“自我接受” 前言 解释是桥梁,而判断是刀。 解释是链接一个概念与另一个概念的桥梁,他是中性的、丰富的、美妙的,但判断不是。 一旦你对一件事情下了判断,他就好像手术刀一样,有人能够通过你的判断去除顽疾、有人却被你的刀杀死。 所以这篇帖子以解释切入,我不会过多地下判断,比如,我那个时候这么做是不对的;我不会说这种话,我只会告诉你,我当时下这个决定,我是这么想的。 我希望看到帖子的各位都能有所收获,无论你赞同或是不赞同。 那么,我们开始。 不后悔以前的所有决定 自信的人总是自负的,而且越年轻越自负。 三四年以前的那个我是不喜欢记录的,那个我永远相信自己当下就处于最佳状态,没想着留下什么来记录自己那样所谓“最佳状态”的人生。 但这究竟有什么好证明的,想证明什么,我到现在还没想明白。可能是因为回忆其实也属于幻想的一种,他疯狂美化我的过去。亦或者说,我自己疯狂美化自己的过去,我对自己说:你以前是那样的,所以现在不该这样。 但这样究竟是哪样,我不知道。 究竟是说,你以前很棒,所以你现在这么差,对不起以前的自己。 还是在说,你以前很棒,虽然你现在很差,但是你还是那个你,你最后也还是会很棒。 我分不清,又或者完全没必要去分。可能我以前并不棒,所谓的棒是年少自负的产物,当然也有可能是幻想粉饰的产物。 关于表达欲和分享欲,我想我是缺失的。甚至表达能力和分享能力也是缺失的。这导致了我的情感或者事物的分享总是一对一的。简而言之,情绪的表达都是在私聊里,朋友圈里是什么都没有的。 但自负,又让我觉得自己应该拥有这样的能力。 我第一次真正意义上分享生活是在2020年4月。 那天的景色很好,一个美好的下午,许久未见的高中同学,美丽的风景。如此好的分享题材,几百张照片中,却没有一张里有我自己。 那样“最佳状态”的自己为什么没有在照片里落落大方的出现呢?我知道,我蜷缩在某个不知名的角落。 我可能是真的在幻想里,我构造了一个自我,一个我理想中的样子,并且这个样子并没有被任何实体记录给打破,我就这样沉沦在自己编织的梦境中,度过一年又一年。 这就是我后来才意识到的问题:我嘴上说不后悔,实际上很多“不后悔”只是我拒绝看见当时的自己。 不后悔不是错,但如果“不后悔”变成一种防御,它就会让我永远无法复盘。 早期的我:控制关系、控制人生 我从小学开始喜欢看小说,后来引申成各种各样的书。 有两类东西对我影响很大:一类是黑暗流小说,一类是早期恋爱技巧。 这里我点名三本书《极度深寒》《蛊真人》《把妹达人之迷男方法》。 前者让我很早就开始相信意志、策略、利益、目的;后者让我把亲密关系也拆成步骤、话术、推进、反馈。 所以我早期的恋爱更像策略型恋爱。 我关注的是:我该怎么做,怎么推进,怎么让关系往前走。 我可以处理暧昧,可以判断时机,可以预制场景(迷男这本书里称之为罐装材料),可以记住自己的反应,再把它变成下一次的素材。 这里不展开评价,因为这篇帖子不是审判过去的我。 我只能说,当时的我确实是这么活下来的。那个阶段的我没有更好的工具,他只能用自己手里有的东西理解世界。 后来高中毕业,我家里突然告诉我没钱交学费。 这句话对当时的我来说不是一句普通的通知,而是天塌下来的瞬间。因为我此前并没有做好“大学可能上不了”的准备,也不知道大学有贫困生补助、助学贷款这一类路径。我当时能想到的只有一个办法:去赚钱。 于是我去找工作。 端盘子当然可以,但端盘子赚不了多少钱,至少很难在一个暑假里赚够学费、生活费、电脑这么多钱。那个时候我想起了一个人,一个曾经在我打篮球的时候问我要过微信的大姐姐。她在辅导机构工作,于是我通过她接触到了辅导机构的工作机会。 这里说出来并不好听,但这就是当时的我:我会迅速盘点手里的资源,包括人、关系、好感、机会,然后判断哪一条路能最快解决问题。 我和她谈恋爱,也通过她获得了工作机会,她大我七岁。一个暑假,我赚了一万六,交了学费,买了电脑。 如果只看结果,这件事很漂亮。一个刚高中毕业的人,靠自己解决了上大学的第一笔钱。甚至我也可以把它写成热血故事:家庭困难,少年自救,暑假打工,赚够学费。 但如果往里面看,事情没那么简单。 那时的我并不是从容地努力,也不是温柔地成长。我每天早上醒来,看着天花板,感受到的是无穷无尽的压力向我压来。我必须想办法,我必须解决,我必须立刻行动。 也是从这里开始,我越来越熟悉一种模式:恐惧来了,我不感受它,我把它变成行动;压力来了,我不诉苦,我把它变成方案;关系出现了,我也会下意识地判断它能不能成为路径。 于是我形成了一个非常稳定的机制: 恐惧/焦虑→不允许存在→转换为行动。 我不是没有情绪,我是不允许情绪浪费我的时间。我会立刻解决问题,立刻行动,立刻控制局面。 这套机制很有用。它真的让我活下来了。 但它也有代价:我越来越不会感受自己。 终于我遇到非常让人遗憾的事情 第二次萌生记录、分享的想法是在2022年9月。 我被甩了。 一条很普通的朋友圈,几张路边拍摄的风景。我古怪、封锁的内心,第一次那么强烈地希望向外界发出哀嚎。 可实际上,普普通通的朋友圈,完全没有承载任何东西,也没有表达任何东西。我所有的嘶嚎被我挖了个坑埋下了,墓碑上写着,这是让人开心的一天。 但我真正想写在墓碑上的是,我现在很难过,我近乎窒息,我需要陪伴、关怀,如果没有这些,我将会死去。 或许我已经这样死去过很多回了。 不知道从什么时候开始,我记不住不好的事情,我回忆起来的过去永远是美好的,发光的,温热的。这是和煦阳光下的微风,是一口唇齿留香的茶水。 但这样的自我保护机制,也是击溃我最强力的武器。 我只有好的回忆,可我的社交关系确实在变淡,或者说分崩离析。 我只有好的回忆,可我的痛苦并没有消失,它们被埋葬在一座又一座坟墓里,终于在那一天,它们倾巢而出,成功击碎了我的一切。 它们打碎我的脊梁,狠狠撕去我粉饰回忆的纱帐,将我的双眼撬开,逼迫我面对所有令人痛苦的现实。 起初我是有意志力的,我一次又一次肯定自己的优秀,疯狂地流泪但还是咬牙坚持。 但后来不行了,我发了疯似地寻找过去的痕迹,然后一脸茫然。我不知道我在做什么,我要证明什么,我要向谁证明,我不知道。 我甚至都不知道该庆幸还是该难过,至少从我的考古发掘工作来看,我以前确实优秀。但那又怎样呢,那都是以前了。 我想哭,我觉得我很棒。 我想哭,我觉得我对不起我自己。 我越是想接受,越是不能接受。接受这样的自己过去我得不断去对比现在和过去,接受这样的自己我得不断反刍喜悦和痛苦。 这就是我后来对自己的一个判断: 我不是没有情绪,而是延迟处理情绪。 被压下去的东西不会消失,它只是暂时不找你。 学业和未来:我没有走上那条路 除了感情,还有一件事对我打击很深:学业。 这件事我以前不太愿意细说,因为它很容易显得像是在抱怨命运,或者像是在给自己找借口。但如果真的要讲自我接受,这一段绕不过去。 我大学里成绩很好,圈子也很好。我可以很自信地说,我身边那批人绝对是学校里最优秀的一批人。 他们基本都保研了,去了很好的学校。 而我没有。 我工作了。 这件事最痛的地方,不只是“我没读研”这么简单,而是我曾经真的以为自己有很多条路。 我爸在我上大学的时候总是和我说,家里马上要有钱了,马上要有钱了。他多次告诉我,可以送我出国留学。这让我对未来产生了一种很漂亮的想象:我可以工作,可以考研,可以出国,也可以继承家里将来会有的资源。 于是我选择了工作。 现在回头看,这个选择是我自己做的。但当时的我并不是站在一个充分知情、资源稳定、心态平和的位置上做选择的。我是被家庭承诺、未来想象、现实压力一起推着走的。 后来我开始实习,开始工作,真正看到工资和房价的差距,看到世界真实的参差,我才慢慢意识到:原来我以为的很多路,并没有真的在那里等我。 更难受的是,我身边那些同样优秀、甚至我曾经觉得和我站在同一层的人,已经走到了另一条轨道上。 他们在读研,在更好的学校,在更好的平台。 而我在工作。 这不是说工作低人一等,也不是说读研就一定更好。问题在于,当时的我无法接受这种错位感。 我会不断比较:如果我当初考研呢?如果我没有相信那些承诺呢?如果我再坚持一下呢?如果我也去了C9 呢? 这些问题没有答案,但它们一直在消耗我。 所以后来我对“以前的自己”那么执着,不只是因为感情失败。也是因为我无法接受:那个曾经成绩很好、圈子很好、明明可以走学术路线的我,为什么最后没有走上那条路。 我不是单纯怀念过去的优秀。 我是在哀悼一个没有发生的未来。 情感隔离和疯狂工作 后面我选择遗忘。 这不是一句文学化的表达,而是我真的让自己不去碰那些东西。我把事情埋掉,把痛苦埋掉,把遗憾埋掉,然后继续往前走。 我开始疯狂工作,两点一线,生活极其简单。 工作反而让我舒服,因为工作里有明确任务,有反馈,有结构,有进度。只要我足够忙,我就不用面对自己。 那时的我像进入了一种“功能性存活”状态。 我可以写代码,可以开会,可以推进工作,可以看起来正常。但精神世界是空的,生活里没有真正的表达,也没有真正的流动。 后来我慢慢发现,工作不能永远替代意义。 当一个人只能靠行动压住情绪,只能靠目标维持自己,他总会在某一天问自己:我到底在干什么? 这个问题出现以后,我就知道,光靠工作撑不住了。 我开始尝试挖掘过去,选择接受自己的过去 我真正开始挖掘过去,是我接触到荣格之后。 这里要强调一下,不是荣格救了我,也不是我照着荣格的路走。更准确地说,是我在读《红书》的时候,发现他的一些观念和我过去许多零散想法不谋而合。 于是我开始记录。 我建了两个文件,一个叫零碎记录.md,一个叫梦泡.md。 零碎记录用来写我读书后的想法、对自己的拆解、对过去的复盘。 梦泡用来记录我记得的梦。 这两个东西对我很重要,因为它们解决了我过去最大的问题:我不记录,我就会被回忆欺骗。 回忆是会美化的。 回忆会把痛苦埋掉,只留下温柔、发光、漂亮的部分。它看起来是在保护我,实际上是在让我失去真实反馈。 所以我开始做一件很笨的事情:把我能想起来的东西写下来。 不是为了证明我对。 也不是为了证明别人错。 而是为了还原当时的我到底为什么会那么做。 这一步对我来说,就是自我接受的开始。 自我接受不是原谅,也不是洗白 很多人说自我和解,我其实不太喜欢这个词。 因为“和解”听起来像双方坐下来握手,好像过去的我和现在的我必须达成某种温情脉脉的结局。 但我的体验不是这样。 我的体验更像自我接受。 接受不是说:我以前做的都对。 接受也不是说:伤害过我的东西都不重要。 接受是说:我承认,当时的我在当时的认知、资源、压力、欲望、恐惧之下,只能那样选择。 比如早期的我喜欢控制关系,那不是因为我天生邪恶,而是因为我需要安全感,需要确定性,需要用策略弥补不稳定。 比如我对亲密关系要求很高,容易进入教学、指导、评估模式(换句话说就是爹味重、以为自己懂很多),不是因为我不在乎别人,而是因为我习惯站在“解决问题”的位置,而不是“柔软承接”的位置。 比如我会把不好的事情忘掉,不是因为我潇洒,而是因为我当时承受不了。 所以我现在回头看过去,不再只问一句:我是不是错了? 我会问: 当时的我害怕什么? 当时的我想保护什么? 当时的我手里有什么? 这不是洗白。这是把过去的自己从审判席上带下来,让他坐到我旁边。 躯体反应:身体比记忆诚实 挖掘过去的时候,我遇到一个很麻烦的现象。 有些事情我已经忘了。 但身体没有忘。 我会胸闷、心痛、战栗,甚至在某些情境下出现很强烈的身体反应。比如看到一些画面会恶心干呕,比如面对某些亲密氛围,我很早就会提前回避。 这时候我才意识到,记忆不是只有文字版的。 有些东西在身体里。 理性可以说服自己:过去了,没事了,不重要了。 但身体会说:不,还在。 所以后来我复盘过去,不只看事情本身,也看身体反应。 哪里胸口发紧,哪里呼吸变浅,哪里想逃,哪里想骂人,哪里突然很想睡,哪里突然进入攻击性。 这些反应不是敌人。 它们更像路标。 它们告诉我:这里曾经埋过东西。 解释系统、筛选系统、斩杀系统 在复盘人际关系的时候,我发现自己有三套系统。 第一套是解释系统。 我很擅长理解、归纳、总结、建立模型。我会因为和一个人聊得很好而产生好感,因为我会觉得我们之间出现了桥梁。 第二套是筛选系统。 当一个人开始拒绝沟通,或者质疑我的解释,或者让我长期单向消耗时,我会开始权衡利弊,调整这个人在我这里的权重。 第三套是斩杀系统。 当筛选系统过载,也就是触发底线时,我会直接删除、断联、切断关系。 这里可以举一个最好的例子:玫玫。 我的名字叫“踏雪寻玫”,所以写到这里其实有点微妙。 我曾经追求过她。我们联系很紧密,晚上一起打游戏,聊天到凌晨一点,甚至凌晨三四点。我们之间有过很强的流动感,也有过很明显的暧昧感。 如果按照解释系统来看,我会觉得:我们聊得来,我们之间有桥梁,我似乎可以理解她,也可以帮她面对一些她不愿意面对的东西。 但后来她突然不理我了。 某个长假我们没说过几句话,事后的解释是:感觉太暧昧了,我们应该只是朋友。再后面,基本都是我主动找她,她很少主动找我。 这个时候,筛选系统上线了。 我开始衡量:这段关系到底是是不是在消耗我?她到底是一个可以稳定交流的人,还是一个只在某个阶段提供高浓度情绪流动的人? 后来我和她聊到自我、人格面具、压抑、喝酒这些话题。她说我不要试图窥探别人的自我,不要总用碎片知识去证明别人认知上的错误。 我破防了。 因为我最近一直在做的事情,就是整理自己的经验,建立自己的解释。我并不认为我是在证明她错,但她这样说,会让我感觉:我想搭桥,但她不认可这座桥,甚至认为这座桥是一种侵犯。 于是筛选系统过载,斩杀系统上线。 我删掉了她。 这不是说她有多坏,也不是说我一定多对。这个例子只是很清楚地展示了我的运行机制: 先解释,解释失败后筛选,筛选过载后斩杀。 这套系统保护过我。但它也带来一个问题:我太极端了。 很多关系不是只能“进入核心”或者“直接斩杀”。有的人只能做普通朋友,有的人只能做游戏搭子,有的人只能偶尔吃饭,有的人只能停在陌生人阶段。 如果没有降级系统,我就会把所有情感需求都押注在“稳定亲密”上。 一旦对方从亲密撤回,我就会觉得不安全,然后进入斩杀。 所以我现在训练的是: 不降低爱的标准,但降低普通连接的准入门槛。 不是所有人都要懂我。 不是所有交流都要进入灵魂。 有些关系只承载一个场景,也可以。 这对我来说,是很重要的自我修复。 从刀到水:我真正要练的是程度 我后来写过一句话: 修行不是压制攻击性,也不是放任流动性;修行是训练程度,让水能流,而不是只能靠刀开路。 这句话基本能概括我现在的阶段。 我以前很像拿着锄头开沟渠的人。 我要先判断,先切开,先规划,先设计路径,然后让水流进去。 但自然不是这样的。 自然是水自己冲开土地,水自己形成河道,水承载船只。 我的本质更像水流。 但我过去太习惯用刀,用判断,用控制,用强行推进。它们有效,但它们会让我过度用力。 所以我现在真正要练的是程度。 解释要有程度。 亲密要有程度。 攻击性要有程度。 复盘也要有程度。 不是所有事情都要立刻想明白,不是所有情绪都要立刻解决,不是所有关系都要立刻定性。 如果说以前的我靠“强行开路”活着,那么现在的我在学“让水自己流”。 我如何共情以前的自己 终于回到原帖的问题:如何共情以前的自己? 我的答案很简单,但做起来很难: 不要急着原谅他,先解释他。 不要一上来就说:你当时太蠢了。 也不要一上来就说:没关系,我都原谅你。 这两种都太快了。 我们可以先写事实: 当时发生了什么? 我做了什么选择? 我为什么做这个选择? 当时我有什么? 当时我有什么顾虑? 当时我有没有别的路? 如果有,为什么没走? 如果没有,那我现在凭什么要求当时的我做到? 问过这些,你可能还是会难过,还是会遗憾,甚至还是会觉得当时的自己很差。 没关系。 自我接受不是一次完成的。 它更像一条河。 你今天理解一点,明天又推翻一点,后天又多看见一点。 寻找自我本来就是没有固定路径的,像闭着眼睛在黑夜里摸索。 但只要你愿意向前走,你就已经和逃避不一样了。 我的具体做法 如果一定要总结成方法,我会这样写: 第一,记录事实。 不要只记录结论,也不要只记录情绪。尽量写清楚发生了什么。越具体越好。 第二,写当时的解释。 不要问“我怎么这么傻”,问“当时的我为什么会这么想”。 第三,承认遗憾,但不急着后悔。 有些事情就是很遗憾。遗憾不等于我必须否定整个人生。 第四,看身体反应。 心痛、胸闷、战栗、想逃、想睡、想攻击,这些都是线索。 第五,区分解释和判断。 解释是桥梁,判断是刀。先解释,再决定要不要下判断。 第六,给关系分层。 不要让一个人承载你所有需求。稳定亲密、深度朋友、普通朋友、场景关系、观察对象,本来就不是一类东西。 第七,允许自己慢慢来。 不要把“我为什么还没好”变成新的自我攻击。 结尾 写到这里,我还是不敢说我完成了“自我和解”。 我只是比以前更能接受自己。 我接受那个自负的我,那个控制关系的我,那个疯狂工作逃避痛苦的我,那个被甩后崩溃的我,那个不记录也不分享的我,那个把痛苦埋进坟墓里的我。 我也接受现在这个仍然会分析过度、仍然会攻击、仍然会脆弱、仍然需要稳定亲密关系的我。 以前我总想创造一个永恒的白昼,让一切都被照亮,让一切都有解释。 但后来我发现,人不能只活在白天。 人也需要夜晚,需要安静,需要不被分析,需要容纳一切的黑暗。 所以自我接受对我来说,不是把过去全部照亮,也不是把过去全部埋掉。 而是承认:白天和夜晚都属于我。 感谢能看完的你,这是一个精神病人的呓语,也是我来时的路。 1 个帖子 - 1 位参与者 阅读完整话题
IT之家 5 月 14 日消息,华为鸿蒙今日官宣, HarmonyOS 6 终端设备数突破 6000 万 。 IT之家注:数据来源于华为内部统计,基于搭载或支持升级至 HarmonyOS 6 的设备,统计时间截止至 2026 年 5 月 14 日。 在 3 月 23 日的华为春季全场景新品发布会上 ,华为终端 BG 首席执行官何刚宣布,鸿蒙 HarmonyOS 5 / HarmonyOS 6 终端设备数突破 5000 万。 在 4 月 20 日的华为 Pura 系列及全场景新品发布会上 ,华为常务董事、产品投资评审委员会主任、终端 BG 董事长余承东宣布:鸿蒙 HarmonyOS 6 终端设备数突破 5500 万。
发这个贴子的原因是来源于论坛里出现的几个热帖,例如: 1. “自用中转站” 2. “开户领五常大米” 每次看到都会忍不住想笑(不是嘲笑!真的是会心的笑!)。因为总想起来黄鱼上“女生自用的 xx”、家门口排队领鸡蛋的。所以,不要嘲笑广场舞、暴走啥的,谁还不是一样呢
发这个贴子的原因是来源于论坛里出现的几个热帖,例如: 1. “自用中转站” 2. “开户领五常大米” 每次看到都会忍不住想笑(不是嘲笑!真的是会心的笑!)。因为总想起来黄鱼上“女生自用的 xx”、家门口排队领鸡蛋的。所以,不要嘲笑广场舞、暴走啥的,谁还不是一样呢
发这个贴子的原因是来源于论坛里出现的几个热帖,例如: 1. “自用中转站” 2. “开户领五常大米” 每次看到都会忍不住想笑(不是嘲笑!真的是会心的笑!)。因为总想起来黄鱼上“女生自用的 xx”、家门口排队领鸡蛋的。所以,不要嘲笑广场舞、暴走啥的,谁还不是一样呢