avatar

御坂网络司令塔

Django Q + psycopg2cffi 单元测试踩坑记

可能是出于防止连接丢失的原因,Django Q 项目在 cluster.py 文件中大量应用了 db.close_old_connections(),关闭并重新打开数据库连接。而在 Django 自带的单元测试 django.test.TestCase 中,是采用了数据库事务进行测试数据回滚,以实现测试之间互相隔离的目的;在此时关闭数据库连接,就会使得事务中断,抛出异常——在 psycopg2 中,会说 InterfaceError("connection already closed"),而在 psycopg2cffi 中,会说 TransactionManagementError("An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block。 之前查到几个说法,关于 TestCase 改成 TransactionTestCase 之类的,并没有用。

[转]给行动者的五项自我照护建议:觉醒不应意味着灵魂的崩溃

This is translated from 5 Self Care Tips for Activists — ‘Cause Being Woke Shouldn’t Mean Your Spirit’s Broke by Kim Tran. If this article violated anyone’s copyright, please let me know and I will delete it. Co-translator: limelight 副站长 鳄鱼 昨天,我作了一个二十分钟的访谈,关于社交媒体。 事实上,这二十分钟的对话和网络暴力有关。 对象是一群做民族研究的学生。这些学生不知道该如何处理他们新建立的政治意识和社交圈子,与他们那些很久没有交流过、却很喜欢在 Facebook 墙上发表种族主义言论的中学同学之间的关系。 这是经常发生的。 我之所以知道,是因为我曾经有个学生在下课后问我一些类似“我再也不想应付那些种族主义的朋友了”“我找不到没有刻板印象的电影来看”之类的事情。 我个人最欣赏的是:“有时候,我觉得我所知的关于压迫的一切太多了。” 最后一句是我最偏爱的关于“疲倦”的表达。因为:一、我知道那是什么感觉,你肯定也一样;二、它表达了,对于有政治或激进意识(觉醒)的人们来说,自我照护,或者说生活,有多消耗精力。 我们都知道自我照护清单告诉你要记得吃喝拉撒睡,这些都很重要(要不然你就死了)。但对于快速增加着的觉醒者来说,自我照护往往还需要其它形式。 泡泡浴(译者注:不是王道征途!英文里没有 114514 的说法)、花式晚餐、有氧运动,这些都很好,并且也可以成为你自我照护的一部分。(去吧!) 但是你,和我一样,可能也需要和某个傻瓜绝交,读点小说而不是 The New Jim Crow,或者快乐地吃点加工食品。#我喜欢午餐肉你别拦着我 因此如果你是个行动者、组织者或者社群成员,需要整天、每天从事促进社会正义的工作,而且总是感到疲劳(甚至可能是不健康),这篇文章是为你准备的。 如果你不得不花很多时间在 Facebook 上和家人、朋友甚至陌生人(争论),这是为你准备的。 如果你一天25小时都在和人们解释为什么 The Mindy Project 是一种肥胖羞辱,但是你却还是很喜欢那个少数族裔女主角(译者注:原文为 “she’s a woman of color”——御坂实在找不到中文中等同于 PoC 的说法了。毕竟“有色人种”一词更接近歧视性的 “colored people”),这当然是为你准备的。

概率论与数理统计笔记

求样本空间 连续扔一颗骰子, 直到6个结果中有一个结果出现两次. 记录投掷的次数. $$S = {2, 3, 4, 5, 6, 7}$$ 连续扔一颗骰子, 直到6个结果中有一个结果连续出现两次. 记录投掷的次数. $$S = {2, 3, 4, …}$$ 连续扔一枚硬币, 直到正面出现, 观察正反面出现的情况. $$S = {H, TH, TTH, …}$$ 扔一枚硬币, 如果正面就再扔一次, 否则扔一颗骰子. 观察结果. $$S = {HH, HT, T1, T2, T3, T4, T5, T6}$$ 设 A, B 为两个事件, \( P(A) = \frac{1}{4} \), \( P(B) = \frac{1}{2} \), \(P(AB) = \frac{1}{8}\),求 \(P(A \cup B)\), \(P(\overline{A}B)\), \(P(\overline{AB})\), \(P[(A \cup B)(\overline{AB})]\). $$ \begin{align} P(A \cup B) &= P(A)+P(B)-P(AB) \newline &= \frac{1}{4}+\frac{1}{2}-\frac{1}{8} \newline &= \frac{5}{8} \newline P(\bar{A}B) &= P[(S-A)B] \newline &= P(B-AB) \newline &= P(B)-P(AB), (AB \subset B) \newline &= \frac{1}{2} - \frac{1}{8} = \frac{3}{8} \newline P(\overline{AB}) &= 1 - P(AB) \newline &= 1 - \frac{1}{8} \newline &= \frac{7}{8} \newline P[(A \cup B)(\overline{AB})] &= P[(A \cup B)(\bar{A}\bar{B})] \newline &= P[\bar{A}(A \cup B) \cup \bar{B}(A \cup B)] \newline &= P(\bar{A}A \cup \bar{A}B \cup \bar{B}A \cup \bar{B}B) \newline &= P(\bar{A}B \cup \bar{B}A) \newline &= P(\bar{A}B) + P(\bar{B}A) - P(\bar{A}B \cap \bar{B}A) \newline &= P(\bar{A}B) + P(\bar{B}A) - \emptyset \newline &= P(\bar{A}B) + P((S-B)A) = P(\bar{A}B) + P(A-AB) \newline &= P(\bar{A}B) + [P(A) - P(AB)] \newline &= \frac{3}{8} + \frac{1}{4} - \frac{1}{8} \newline &= \frac{1}{2} \end{align} $$