个人感悟:来中农烟院的第一学期
- 🐭🐭 -> 🐉🧱=>- 🐭🐭 -> 985✌×
- 🐭🐭 -> 🐉=>- 🐭🐭 -> 🥬🐕√
第一个学期过去了,想写点啥纪念一下。
别看字多,很多都是代码,不看也罢。
23年九月
只能靠说说与网易云喜欢串起来的心绪
其实也不仅仅是这几个月啦,时间可能更久远一点。
从9月5日坐车来学校,经过了一系列乱七八糟的事情后,拿着校徽时才发现,自己已经成为了这个学校的一名新生。 但是第二天凌晨家里的变故,让我无法再专心周围的事情,家人的想法是让我好好学习,所以我不仅没有见最后一面,哪怕葬礼也没有参加。 我一直有种很强的怕失去周围人的焦虑感(或者叫恐惧感),这种感觉从高中的时候,发现家人搜索肺癌症状的浏览记录开始。 我高一上半学期的学习劲头很大程度上是为了逃避这种感觉,但是一直如影随形。
跟随了六七年的焦虑,我本以为会随着老人的去世而消失,但是除了悲伤,这种情绪也经常冒出来,惧怕家人再离开我。
在这种情况下,找家人发泄是不可能的,因为他们也很需要找渠道释放悲伤; 同学更是不可能,超一个认识不过几天的同学哭诉自己家里死了人确实不大好; 班主任也不好说,二学位的管理水平和散养的专科院校没什么差别; 以前的同学也算了,抓着唯一一根救命稻草的感觉,不管是抓的一方还是被抓的一方都不好受……
貌似只能自己憋着。
因此,对于我要来干什么,我只能说我没想好。
如果是假期的话,我可能还在慢慢啃专业课。 在收到短信前,我一直以为自己没有考上。 在收到后,可能是觉得自己有退路了吧,浮躁了不少。
不过开学第一天和新来的舍友简单交流了下,发现他们或多或少是和这个专业有关系的, 要么是经管类出身,要么是打算考管综的,两者都无的,只有我。
随着「监听」舍友们的聊天,我把我暂时的目标定为了提升自己的交际能力。 我再把这个目标具体化为了两个方面: 一、拥有一定程度的在公共场合以及相对私密的社交场合的控场能力以及调动情绪的能力, 二、其他人对我的印象不会太差。
在第一周结束回家的时候,我在自己的说说里边写到了:
用我在本科阶段的经历以及某位我很钦佩的心理学出身的情感博主的话来说,一种比较好的锻炼社交能力的心态是「去想象你是一名来到新学校的新生」。
我当然不用想象,因为我现在本身就是某酒吧舞的新生,虽说这个的含金量相比于本科生与硕士生而言是坨〇,但是新生的身份是无可辩驳的。
但是我并没有那种开心的情绪。原因分为内在以及外在,其中外在的事儿不小而且到现在已经彻底结束并且不会再有任何进展/恶化就不再提及,主要聊聊内在的原因。如果你们了解我的话,内在的原因也很好理解——我一点也不希望我在人际关系的方方面面重蹈本科阶段的很多很多事后回想起来除了羞愧地锤床板或桌子外什么也做不了的逆天事儿了。但是,在我人生的前十几年,这种羞愧是我修正自身行为的唯一动力。
在这种心态的驱使下,我确实没有再犯大一大二的很多低级且逆天的丑事(现在想想,只能用丑事来形容了),但是我整体上处于神经紧绷的状态,长时间如此没什么好处,特别是在研究院这个注定无法体验完整大学生活的环境。
然而,我又无法完全的放松下来,因为我当前的言行还有很多严重偏离正常人类社交的部分,成为怪人,特别是在对社会性要求很高的经管类专业下,是件很可怕的事情。而且这里的人数相比本科少得多,因此可以说毫无试错空间。
以上内容,是我在对中农烟院的整体状态、公共管理专业、第二学士学位的学生的整体面貌等因素毫无了解的情况写的。 在 zero prior knowledge 下写就的内容确实和事实存在着比较大的差别。
说实话,对于上次听文科类课程还是在高二的我而言,来到这里,除了不适应,只有不适应。 最明显的就是一旦尝试像自然科学的课程那样子完全听讲的话,超级超级累。 而且你会发现,老师讲的很多都和考试没有直接的关系。 我舍友说,你就不用听啦,你看看别的同学在干什么。
我不敢,因为我和他们不是同一场考试到一个地方的,就算看上去差别不大内在肯定有差别。
反正感觉非常迷茫。 为了尝试让自己看上去像是在好好生活,会做很多事情。 但是确实没有什么心情。
在临近九月末的某天,我给当时一块考二学位,但是最后选择去北师大的一位考友发了消息。
“哥们,幸好你没来”
“公管二学位可烂了”
“教学水平介于211和普通一本”(不是原话,因为当时的认知有偏颇所以没说出来)
“其他专业都归本部管,就这个归烟院”
“靠”
燕麦酸奶拌蛋白粉好好吃
对了,在开学后,我想拾起来假期的健身。 因为我把去年那个女生拒绝我的原因归因于缺乏 physical attractiveness 。 脸难改但是身材相对容易,而且学校健身房免费也够用,对小白来说。
所以我想试着开始锻炼。
很遗憾,除了这节的小标题外,我没有什么收获。 舍友倒是经常一块儿去锻炼,好像是有氧馆偏多。
有天傍晚下课,我吃完饭想上床躺会儿。 醒来的时候发现宿舍里一个人也没有,灯也关着,我肚子也有点饿。
宿舍里没有人,灯也没开,随手打开了网易云音乐。 给我推了一首歌,俄文的,挺好听的。 一看歌名,Японское порно,中文,「日本色情片」。
说来惭愧,我睡前真的有在看群友发的〇图,还是个动图,某日本画师的,名字忘了,挺戳我所以我还问了一嘴。
Твоим наслаждением стал просмотр порно(看色情片已经成为了你的乐趣)
Драка с бомжом за баночку колы(为了一罐可乐,与流浪汉大打出手)
Давай посмотрим на звезды с балкона(让我们从阳台上看星星吧)
Или почитаем вместе Оруэлла(或者一起读一读奥威尔)
伴着歌声,我起身坐在床边。 看窗外网球场的灯打出来的光打到宿舍的天花板上,留下发亮的格子。
听着,听着。 我也不知道我在想着什么。
就这么待着。 在歌曲结束又换上一首炸裂的 phonk 后,我才意识到自己肚子饿了,下床,走到楼下买了袋酸奶来吃。
还有啥事?
我当时还经常听一首歌。
Are you lost?
一种类似于恍惚与感伤的情绪,音符好像碎掉了从天上慢慢的落下来。
有用吗? 好像没用。
还有做了点功课自己组装了个漂移板,还有就是统计学的小组。
漂移板不重要,到现在也不会。
第一次接触
但后面这个挺重要的,算是第一次正面和本科生群体直接接触(第三类接触了属于是)。
在此期间还有个第二类接触。
就是第一次上管理信息系统的课的时候。
我听后面两个小姑娘在那里悉悉索索。
“欸,二学位是啥?”
“好像是一帮没考上研的过来读的东西。”
嗯,是这样的东西。 本身我来这里就带着种「下位者」的身份与色彩,不舒服?憋着。
再回来说这个第三类接触。
老师说要组成小组,当时我好像在第一排还是第二排的。
后面一个女生戳了下我,问我要不要加她们组。
我愣了下,然后点了点头。
毕竟别人邀请我我没有拒绝的道理欸 ,而且看上去也不丑。
就这么加了微信被拉进了群。
但是…… 这对于一般按照宿舍来分组的舍友们,不是件好事。
其实我不知道该怎么跟他们说,以及后果是怎么样的。 我确实有点慌。
【TODO: 女色是把刀,噶的腰子嗷嗷叫
最后就说另一门管信的小组作业,我肯定带你们飞。
就先这样了。
然后我们宿舍(除了我),大概有两三个组,就这么拆开了。
【TODO: 我可不想当组长,我是混子
【TODO: 没有卷的,很符合我对大学生的想象
课程最开始老师说整什么小组契约,契约的英文是 contract ,和收缩一样。 然后老师让我们写,我说我负责润色还有排版,因为我会一点 LaTeX 嘛,而且也遭受过学术训练的毒打,知道怎么行文更好些。
我稍微查了下,看了下国外还有对岸的一些契约的范本,大概知道是个怎么样的样子了。
但一两天后我第一眼看到她们整的东西时候,就觉得这契约怎么比我大一尝试分析接着伤病请假的「伤残连」的动机结果挂掉的军训论文还难绷啊?
原文我忘了,但是观感很奇怪。 基本上是把「尊重女性」这四个字拍在我——这个组唯一一个不是女的的人——的脸上。
我很想发作,但既来之则安之,还是算了吧。
无所谓。
那就开始改吧。
尊重组员,虽然看上去是
"尊重女性".replace("女性", "组员") ,但是完全可以优化一下。
就改成建立平等友爱的关系、保持交流顺利、积极参与活动什么的,并且举了几个例子巴拉巴拉。
然后想想自己小时候和毛绒玩具玩的场景还有氛围,怀着什么什么的心情,再掰扯点东西上去。
最后整了四个板块、八条,每条带上几行的说明。
契约本身用 LaTeX 写的,用的是一个不知道从哪里拷贝下来的模板,再结合一些自己写论文整理的一些常见的包。
然后哼哧哼哧的打字。
对了,还有签名呢。七个人啊,我在哪?3 + 3 + 1 ?算了 4 + 3 吧,我就不凸出来了,到时候随便找个位置签了吧。 怎么排序是她们的事情,我就不管了。
那话说 LaTeX 怎么弄格子来着?用 \tabular ?对。
就这么算是弄完了,效果不差,英文字符也都是花体字,装逼可以了。
这事儿就这么过去了。
然后大概是第一次上机。
我还拿了之前的生物统计的教材,主打的就是降维打击。
就看这这个电脑。 这个 SPSS ,我好像用过啊。
所以就没怎么上心。
上机的时候我就发现坐我右边那小姑娘挺好玩的。 我玩梗说了句「原神,启动!」没想到她反应竟然那么积极。 然后,我也没想到她也玩 Minecraft 。 当时我就觉得挺有意思,看样子那小姑娘也和 mjw (拉我进小组那位)关系挺好。 就这么有一搭没一搭的聊了会儿。
因为真的好有意思嘛,就问了她一嘴:
“你本来就这样还是… 被我带坏的啊?”
“本来就这样。”
乐.jpg
在我表演了触控板玩生存但因为吃不了东西而被迫结束后,下课了。
后来的某次课上,老师又讲了讲了很多遍的关于青年择偶的那篇研究,又是小组坐在一起。 老师说谁有对象举起手来,在满座位的手中,我发觉到我们组除了我之外,只有一两个人没举起来。 还都是没怎么接触过的那种。
那没事了。
代码瘾犯了
某天晚上,突然代码瘾犯了,打算把之前老师讲的一些知识用 Julia 写一下。 然后……
代码本体
一些准备工作:
# module Lecture1
#==
 = 这是作业的 Julia 实现版本
==#
#==
# Fields
export field_group_id, field_student_name,
    field_student_id, field_student_class, field_data_padded
# Functions
export fetchstudent, fetchgroup, fetchclass, fetchgrade
export simplerandomsample
export id2idx
# =#
using DataFrames, CSV
# 1. <前置工作>装载分组的 CSV
#==
 = 名词解释:
 =
 = * CSV
 =      CSV,大名逗号分隔值,是以纯文本形式存储表格数据(数字和文本)
 =  的文件格式/文件。
 =      打个比方,这就是一个 CSV 文件:
 =
 = /demo.csv
 = Date,Nickname,OnlineTime,OfflineTime
 = 2023-08-05,十三,00:58,02:17
 = 2023-08-05,CXKLOVEMissC,07:12,09:05
 = 2023-08-07,momo,07:11,09:17
 =
 =     美化一下就可以这样:
 =
 = Row │ Date        NickName       OnlineTime    OfflineTime     
 =─────┼───────────────────────────────────────────────────────
 =   1 │ 2023-08-05           十三        00:58          02:17  
 =   2 │ 2023-08-05  CXKLOVEMissC        07:12          09:05
 = ... │  ...            ⋮                 ⋮               ⋮
 = 
 = * DataFrame
 =     一种以表格为主的数据结构(和文件类似但是与之不同的是其在
 = 电脑的内存而非硬盘里面)。
 =     (本想多写一点但我发现我也不大会... Orz)
 =
==#
# 组别的 DataFrame
groups = CSV.read("统计学分组.csv", DataFrame)
# 2. <前置工作>书写一些工具函数 && 检查数据
#==
 = 关于列名
 =     通过别的列名来命名的好处是,如果 CSV 文件内的列名被修改了,可以很轻松的
 = 在这里更改别名来更新相关代码。
 =     这是从软件工程角度来思考以及实现的。
==#
# 请使用 DataFrame.propertynames() 来确保是 Symbol 而非 String
field_group_id = :GroupID
field_student_name = :Name
field_student_id = :ID
field_student_class = :Class
"""数据有缺如/异常"""
field_data_padded = :Padded
# 在 DataFrame 中,需要通过 getproperty(df, property) 来实现。最基本的查找功能:
"""
根据名字得到学生信息
julia> fetchstudent(groups, "GES")
DataFrameRow
 Row │ GroupID  Name      ID             Class     
     │ Int64    String31  Int64          String15?
─────┼─────────────────────────────────────────────
 148 │      25  GES    20235055*****  missing
"""
function fetchstudent(df::DataFrame, name::String)::DataFrameRow
    # {:Name => (name -> name =? name_inputed)} -> Boolean
    student_res = filter(field_student_name => nm -> nm == name, df)
    # With a new row.
    eachrow(df)[id2idx(df, getproperty(student_res[1, :], field_student_id))]
end
"""
根据序号或学号得到学生信息
julia> # Or with fetchstudent(groups, 20235055*****)
julia> fetchstudent(groups, 148)
DataFrameRow
 Row │ GroupID  Name      ID             Class     
     │ Int64    String31  Int64          String15?
─────┼─────────────────────────────────────────────
 148 │      25  GES    20235055*****  missing
"""
function fetchstudent(df::DataFrame, order::Int)::DataFrameRow
    if order <= 0
        # 排除【一定在】列表外的情况
        @error "表的行号不能为负数或零,请根据其他函数返回的报错排查错误,如果没有其他报错请检查您的代码。"
    elseif order > 1e9
        # 是学号
        eachrow(df)[id2idx(df, order)]
    else
        # 是编号
        if order <= size(df, 1)
            eachrow(df)[order]
        else
            df_size = size(df, 1)
            @error "访问的编号($order)大于表的最大编号($df_size),请检查是否有错误。"
        end
    end
end
"""
获取所有小组成员的信息(以一个新的 DataFrame 的形式返回)
julia>g25 = fetchgroup(groups, 25)
7×4 DataFrame
 Row │ GroupID  Name      ID             Class     
     │ Int64    String31  Int64          String15?
─────┼─────────────────────────────────────────────
   1 │      25  XMT    20225054*****  missing
   2 │      25  JN      20225054*****  missing
 ... │    ⋮        ⋮            ⋮            ⋮
   7 │      25  GES    20235055*****  missing
                                  4 rows omitted
julia> # 可以按照这个函数展示
julia>show(g25, allrows=true)
7×4 DataFrame
 Row │ GroupID  Name      ID             Class     
     │ Int64    String31  Int64          String15?
─────┼─────────────────────────────────────────────
   1 │      25  XMT    20225054*****  missing
   2 │      25  JN      20225054*****  missing
   3 │      25  JZF    20225054*****  missing
   4 │      25  HKY    20225054*****  missing
   5 │      25  MJW    20225054*****  missing
   6 │      25  CQ      20225054*****  missing
   7 │      25  GES    20235055*****  missing
"""
function fetchgroup(df::DataFrame, group_id::Int)::DataFrame
    subset(df, field_group_id => ByRow(id_ -> id_ == group_id))
end
"""
对学号进行处理以分成三个部分:
- 入学年份
- 可能与专业及所在地有关的编号
- 可能是随机分配得到的编号,可能与班级有关
julia>splitid(20235055*****)
{2023, 5055, ***}
"""
function splitid(student_id::Int)::Tuple{Union{Int64,Missing},Union{Int64,Missing},Union{Int64,Missing}}
    if student_id < 1e13 && student_id > 1e12
        # 1000_0000_00000 ~ 9999_9999_99999
        year = Integer(student_id ÷ 1e9)
        mid_segment = Integer((student_id % 1e9) ÷ 1e5)
        order = Integer(student_id % 1e5)
        year, mid_segment, order
    else
        # Return invalid format.
        @warn "学号 $student_id 格式有误"
        missing, missing, missing
    end
end
"""
一个很小但很重要的功能:返回主表中给定学号的列号
**一定要确保人员唯一!**
"""
function id2idx(df::DataFrame, student_id::Int)::Int
    # from https://discourse.juliacn.com/t/topic/6597
    res = findall(df[!, field_student_id].==student_id)
    # 错误的情况返回 -1 是为了确保在下游函数(通常是df[:, id])能够报错
    if size(res, 1) >= 2
        @error "学号不唯一。有多个值(见下)与 $student_id 对应。\n\n$res"
        -1
    elseif size(res, 1) < 1
        @error "查无此人(学号:$student_id)"
        -1
    else
        # 理论是这个:(1,)
        res[1]
    end
end
function id2idx(_::{DataFrame,Any}, _::Union{Nothing,Any})::Nothing
    @error "输入的 id 并非数字,无法实现查找。"
end
#     在原始数据中,班级的类型为 String15?(String15 或 missing),
# 现在尝试进行补全。
#     观察学号,不难得出以下规律:
#
#  xxxx______x__
# {year}..{class}
function isnewbie4cau(year_in_id::Int, current_year::Int)::Bool
    # Parse year...
    year_in_id == current_year
end
"""根据学号返回班级"""
function getclassfromid(student_id::Int)::Union{String,Missing}
    year, _, tail = splitid(student_id)
    if year == missing
        return missing
    end
    major = "公管"
    grade = string(year % 100)
    class = string(tail % 1000 ÷ 100)
    if grade == "23"
        # 新生 -> 统计学 => 二学位 => "E$grade"
        grade = "E23"
    end
    "$major$grade$class"
end
"""更新学号所对应学生的班级"""
function updateclass!(df::DataFrame, student_id::Int, new_class::String)::Nothing
    target_idx = id2idx(df, student_id)
    # ...
    df[target_idx,field_student_class] = new_class
end
# 为增加代码可读性,在此定义匿名函数
"""根据表以及编号(不是学号了)返回学号"""
getstudentidfromindex = (df, i) -> begin
    getproperty(fetchstudent(df, i), field_student_id)
end
"""小组所有成员都来自一个年级?"""
function allfromsamegrade(df::DataFrame)::Bool
    grade_list = map(getyear, getproperty(df, field_student_id))
    flag=true
    for i in 1:size(df, 1)
        if ismissing(grade_list[i])
            missing_row = fetchstudent(df, i)
            @warn "行\n$missing_row\n存在信息缺如(学号不合法)"
            continue
        end
        if grade_list[i] != grade_list[1]
            flag=false
        end
    end
    flag
end
"""
小组所有成员都来自一个班?
班级信息已经手动加载,因此不需要再检查。
"""
function allfromsameclass(df::DataFrame)::Bool
    class_list = getproperty(df, field_student_class)
    flag=true
    for i in 1:size(df, 1)
        if class_list[i] != class_list[1]
            flag=false
        end
    end
    flag
end对原始数据的清理、筛选以及抽样:
# 3. 确立「班级 <--> 学号」的映射关系
# 所谓「填补缺失值」
"""根据学号修正班级信息"""
function appendclassfromid!(df::DataFrame)::DataFrame
    for i in 1:size(df, 1)
        student_id = getstudentidfromindex(df, i)
        whole_class = getclassfromid(student_id)
        updateclass!(df, student_id, whole_class)
    end
    df
end
# 已执行
# 任务一:修正班级信息
function task1__updateclass!()
    groups = CSV.read("统计学分组.csv", DataFrame)
    groups |> appendclassfromid! |> CSV.write("统计学分组.csv")
end
# 4. 数据筛选
# 4.1. 按照班级筛选
function fetchclass(df::DataFrame, class::String)::DataFrame
    filter(field_student_class => cls_ -> cls_ == class, df)
end
# 4.2. 按照年级筛选
function fetchgrade(df::DataFrame, grade::String)::DataFrame
    fetchgrade(df, parse(Int, grade))
end
""""""
function fetchgrade(df::DataFrame, grade::Int)::DataFrame
    filter(field_student_id => id_ -> getyear(id_) == grade, df)
end
getyear = student_id -> begin
    year, _, _ = splitid(student_id)
    year
end
# 4.3. 没法按照性别分类,因为学校的很多表单都是需要单独提交性别的。
# 5. 随机抽样
using Statistics, StatsBase
# 5.1. 简单随机抽样
""""""
function simplerandomsample(df::DataFrame, select_ratio::AbstractFloat)::DataFrame
    @assert (select_ratio <= 1.0 && select_ratio >= 0.0) "选取比例不在[0, 1]的范围"
    selected_number = round(Int, select_ratio * size(df, 1))
    simplerandomsample(df, selected_number)
end
""""""
function simplerandomsample(df::DataFrame, selected_number::Int)::DataFrame
    @assert (selected_number > 0) "抽样数字不能为负"
    @assert !isempty(getproperty(df, field_student_id)) "抽样样本不能为空"
    # 核心在这
    # 从 df 的 :ID 列返回的 Vector{Int64} 中抽取 selected_number 个样本。
    selected_students = sample(
        getproperty(df, field_student_id),
        selected_number
    )
    subset(df, field_student_id => ByRow(id_ -> id_ in selected_students))
end
# end23年十月
这个月,对我影响最大的有两件事,一是档案转寄的问题,二是运动会。
还有别的,广加社团,那天加了能够六七个,这事儿本身不算很重要但算得上是一个 prerequisite。 有它后面其他的一些事儿才发生了。
不会排球可以不加社团的
应该是 15 号。 我看了不少群,都是那个时候加进去的。 那应该是那一天了。
周几忘了,反正上学期课很少。 跟我们大二的时候动不动早八满课晚上还有课完全不一样(文科真好啊)。 但那天大太阳很好。
我也穿着一件自认为挺潮的衣服。
穿过宿舍楼建筑的缝隙,走去操场。
一个学校社团的一些基本配置,除了已经现充化的二刺螈和一些小众爱好外,都可以用唱、跳、Rap、篮球来总结。
烟院哪怕只是其中的一个校区,也大概符合这样的样貌。
【TODO: 不会跳舞
【TODO: 唱歌跑调可以进吗?
【TODO: 好耶,事二刺螈
【TODO: 混入其中
【TODO: 还有滑板?等着,我把我漂移板拿过来
【TODO: 哇,是排球欸
【TODO: 我二学位的,没有体育课
【TODO: 可以交朋友吗?还是只能从颠球开始练习
【TODO: 练到什么程度?
档案问题——机要还是 EMS ?
Before that night, I think I can cope this easily like before.
这事儿还得从暑假说起来,半年前最开始写这些博客的时候吧。 七月初。
当时我的日常很简单,上午下午去离家一公里左右的医院。 那里有栋楼,顶楼是给在那里实习的学生们复习用的,但是没有人管。
我长得不太 gai 溜子,也没有中专说唱的天赋,所以我也去了。
某天中午,一个之前认识的哥们(参见关于 2022 参加年科创项目的简单介绍)跟我说档案的事儿。 关于那个全国高校毕业生毕业去向登记系统,我嫌麻烦就没再弄。
再加上我觉得下半年就在家备考就行了,没管。
至于自习室呢,被那边医生发现有生人后,我就溜回来了。 没几天中农招生办给我发短信告诉我我过了。
好耶!
在填二学位注册填报系统的时候,也写的是从青岛直接发过来。 当时以为就这么没事儿了。
直到十月份,pyy (我们班班长)给我发消息说我的档案没有到。
我本来是不信的,直到把本科的班级群里我的档案的快递编号一查——送回家了。
寄。
接下来先看看怎么解决。 问问各种老师,本科那边的,二学位这边的,人社局那边的。 都去问一下,要不要专门去人社局甚至去北京。
确定了一个解决方案,招生办那边再发一遍调档函,从人社局到烟院。
那好解决,打电话过去,说要发邮件。 写上信息,然后他们把调档函发给我。
除了抬头变了,别的都一样。
他说让我自己改日期。
我想试着自己用 Python 脚本解决。 但是我发现好像只能读,而且一个字一个字的找很麻烦。 耗了一两个点就这么算了。
最后搜到一个免费的在线服务。
因为改的只有日期,别的排版没有大变动,挺快的。 不到十分钟就解决了。
那就第二天去人社局。
(翌日)
因为尽快解决嘛,而且上午满课,所以下午把管理学的课翘了(你小子,看老师好欺负是吧)。
打车去的,尽快解决嘛毕竟要。
在半道上看见路口的花坛有洒水的东西,喷出来的水雾在阳光底下折射除了彩虹。
有点好看。
大概半个点吧,就到了人社局。
【TODO: 怎么还有管理学作业?我在人社局怎么写啊?
【TODO: 为什么凶我?为什么?我知道吗!?
【TODO: 凭什么两边都在挤我?因为我是软柿子好捏吗?
【TODO: 市长信箱好用吗?
【TODO: 没办法了
【TODO: local 的什么确实有帮了我
【TODO: 回去上剩下半截实验课
总的来说,这是与公共体系接触来解决问题的实践经历,很宝贵但不想感受第二次的那种。
运动会
致敬传奇处理器 Intel 4004 (我的号码牌正好是 4004)
运动会嘛,这个之前从来和我都是绝缘的,但这次秉持着一种「摆脱舒适圈」的想法,报名了。 一个是趣味运动会,还有一个是方队。
按照时间顺序,先说方队吧。
就报名了,直接就过了。
【TODO: 方队
【TODO: 那学姐还是老师好好看
【TODO: “第二学位,白菜开会!”
【TODO: 你们别看她们跳舞了,等开幕她们在你前面你们看个够!
【TODO: 毛毛虫
【TODO: 一定要赢
【TODO: 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
嗯,我确实是二本的土狗,是断脊之犬,是人间之屑,是造物主的败笔。
此前其他事情的进展
抽空用 Elixir 写了个库 | 小组组号写错了
因为想要减轻小组的劳动负担,我熬了两天晚上写了一个从 JSON 到 LaTeX 片段的程序。 这个小程序可以跑模板,把问卷的内容打印到终端上。
这样得到她们写的问卷后就可以直接完成排版什么的。
写完了,我就发现我成功的用纯 Elixir 写了一个库。
内含代码
因为写的是一个 Elixir 包,所以会附带上文件的组织结构:
~\ST\QUESTIONAIRE
├─deps
│  └─jason
│      └─lib
├─lib
│  ├─mix
│  │  └─tasks
│  └─questionaire
└─test
   └─questionaire_test在 /lib/questionaire 里,有三个文件,分别是:
- elect.ex一整个问题
- option.ex问题的选项
- part.ex一堆问题组成的部分
# lib/questionaire/elect.ex
defmodule Questionaire.ElectItem do
  @moduledoc false
  @type t :: %__MODULE__{description: String.t(), items: Questionaire.Option.t()}
  defstruct description: nil,
            items: nil
  def parse(questions) do
    # EEx.eval_file(
    #   "priv/item.eex",
    #   [description: questions.description, items: %Questionaire.Option{item_list: questions.items}]
    # )
    {res, _} =
      Code.eval_quoted(
        template(),
        description: questions.description,
        items: %Questionaire.Option{item_list: questions.items}
      )
    res
  end
  def from(%{:description => desp, :items => item_list}) do
    %__MODULE__{description: desp, items: %Questionaire.Option{item_list: item_list}}
  end
  def from(raw_json) do
    rsl = raw_json |> Jason.decode(keys: :atoms)
    case rsl do
      {:ok, map} -> from(map)
      {:error, res} -> raise res
    end
  end
  defp template() do
    tmp = ~S"""
      \item <%= description %>
      \begin{tasks}(<%= length(items.item_list.item_list) %>)<%= for item <- items.item_list.item_list do %>
        \task <%= item %><% end %>
      \end{tasks}
    """
    EEx.compile_string(tmp)
  end
end# lib/questionaire/option.ex
defmodule Questionaire.Option do
  @type t :: %__MODULE__{item_list: List[String.t()]}
  defstruct item_list: nil
  def len(option) do
    length(option.item_list)
  end
end# lib/questionaire/part.ex
defmodule Questionaire.Part do
  @type t :: %__MODULE__{intro: String.t(), questions: List[Questionaire.ElectItem.t()]}
  defstruct intro: nil,
            questions: nil
  def parse(part) do
    segment = part.questions
      |> Enum.map(fn x -> Questionaire.ElectItem.parse(x) end)
      |> Enum.join("\n")
    {res, _} = Code.eval_quoted(template(), partintro: part.intro, questions: segment)
    res
  end
  defp template do
    tmp = ~S"""
    \large{\textbf{<%= partintro %>}}
    \normalsize
    \begin{enumerate}
      <%= questions %>
    \end{enumerate}
    """
    EEx.compile_string(tmp)
  end
  def from(%{:intro => partintro, :questions => questions}) do
    %__MODULE__{
      intro: partintro,
      questions:
        Enum.map(questions, fn x ->
          %Questionaire.ElectItem{
            description: x.description,
            items: %Questionaire.Option{item_list: x.items}
          }
        end)
    }
  end
  def from(raw_json) do
    res = raw_json |> Jason.decode([keys: :atoms])
    case res do
      {:ok, map} -> from(map)
      {:error, res} -> raise res
    end
  end
end除了库本身之外,也包括了调用库的命令:
# lib/mix/tasks/q.parse.ex
defmodule Mix.Tasks.Q.Parse do
  use Mix.Task
  @impl true
  def run(args) do
    Mix.shell()
    Mix.shell().info("#{inspect(args)}")
    case parse(args) do
      {:json, path} -> fetch_file(path)
        |> Questionaire.Part.from
        |> Questionaire.Part.parse
        |> Mix.shell().info
      # {_, _} -> raise "File invalid!"
    end
    #case File.read(path) do
    #  {:ok, file} -> IO.puts(file)
    #  {:error, reason} -> raise reason
    #end
  end
  defp parse(_args) do
    # 目前只能从根目录的 "_entry.json" 读取文件
    {:json, "_entry.json"}
  end
  defp fetch_file(path) do
    case File.read(path) do
      {:ok, file} -> file
      {_, reason} -> raise reason
    end
  end
end对于一个合格的库,没有测试怎么行?
# test/questionaire_test/parse_test.exs
defmodule QuestionaireTest.ParseTest do
  use ExUnit.Case
  doctest Questionaire.ElectItem
  alias Questionaire.{ElectItem, Option, Part}
  test "single to tex" do
    test_meta = %ElectItem{description: "Simple test", items: %Option{item_list: ["1", "2", "Quagmire"]}}
    assert String.contains?(ElectItem.parse(test_meta), "item Simple test")
    assert String.contains?(ElectItem.parse(test_meta), "task 1")
    assert String.contains?(ElectItem.parse(test_meta), "task Quagmire")
  end
  test "single from json" do
    test_json = "{\"description\": \"Simple test\", \"items\": [\"1\", \"w\"]}"
    meta = ElectItem.from(test_json |> to_string)
    assert meta.description == "Simple test"
  end
  test "part from map" do
    test_map = %{intro: "This is intro", questions: [%{description: "Bla bla", items: ["1", "2", "#"]}]}
    assert String.contains?("#{Part.from(test_map) |> inspect}", "Bla bla")
  end
  test "part to tex" do
    test_map = %{
      intro: "This is intro",
      questions: [
        %{description: "Bla bla", items: ["1", "2", "#"]},
        %{description: "Bla bla", items: ["1", "2", "#"]},
        %{description: "Bla bla", items: ["1", "2", "#"]},
      ]
    }
    tex_text = Part.from(test_map)
      |> Part.parse
    assert String.contains?(tex_test, "item #")
  end
end对了,自述文件不能少。
Questionaire
Generate \(\LaTeX{}\) questionaire based on
It’s a TINY project used to learn Elixir.tasksandJason.
忙了半天发现写库反而是最简单的,更耗精力的在后面。
我尝试把问题仔细填充,但巨累,累死了,也落不得好。
用隔壁宿舍一个社科科班出身的同学的话来说,这问卷整的和量表一样。
然后我开始尝试解释一下具体的满意程度巴拉巴拉。
最后好像整完了,发过去,她们说要 Word (LaTeX 编译出来一般就是 pdf 了)。
(当时我真想和她们班课代表对质去,靠)
那改吧。
在网上找个插件,变一下。
好嘞。
就这么交了。
第二天还是第几天的,老师讲那个问卷。
看样子是比较不错的,但是看前几个,我就觉得有一点点什么的感觉。
一种看孩子过家家的感觉(对不起)。
那按我这工作量,肯定有我们组的了,我想。
【TODO: 不好意思不好意思不好意思,脑抽了,写错了
23年十一月
一个周末憋出来一坨
内容有点多,参见管信课上的汇报。
一个周憋出来另一坨
在相近的时间,管理学也有一个汇报的作业。
【TODO: “干脆咱俩?”
【TODO: 不是哥们你真肝啊,不愧是 985 的学生
【TODO: 糟了,新课忘上了!
【TODO: ppt 可以改,完全可以改
【TODO: 你想像我一样?参加几个即兴演讲竞赛就可以了
【TODO: 错了错了,这个图不是这样的
【TODO: 《一点简单的技术问题》
上台解释回答问题特别牛,散发内在魅力!
这句话我要单独列个标题,因为这是我来这以来第一次老师夸我。
社科还是农科?
某天吧,周几忘了。 时间线和之前管理学原理的作业有重叠。
在班级群看到一个关于 URP 报名的消息。
我当时就很好奇,URP 是啥?
于是问了下隔壁宿舍的 hst (本科就中农的)。
得到的回复就是针对本科生的科研训练。
于是问了下 ChatGPT 。
他说他知道,但是只是知道而已,并且建议我去看一下中国农业大学的网站上关于 URP 的更多信息。
二学位的只有一次报名的机会,再加上我也并不是很觉得我有把握考上。 最重要的是,我其实挺好奇人文社科的科研流程是怎么样的。 就报上名了。
有很多课题可以直接上手做的,但是想了想还是算了。 比方说是设计个电商系统什么的,不到两三个月就可以搞出来,直接全栈好吧。
我要是做做过的我还报这玩意儿干啥?
第一志愿就挑了个比较人文主义的一个课题:关于什么什么的田野调查。
就很有刻板印象下的文科生的内味儿。
而且不用考虑什么定量,处理数据巴拉巴拉。 本科毕设整这个活累得半死。
【TODO: 报吧,反正也考不上研
【TODO: 进了?
【TODO: 我们班就我一个?
【TODO: 老师是副院长?
【TODO: 靠,肚子疼
【TODO: 寄了,匹配上俩卷王了
【TODO: 不是姐们,还没打猎就准备分战利品了?
【TODO: 终于理解师兄了
【TODO: 文科发核心可是很难的
【TODO: 研究思路是啥啊
【TODO: 训练的是她们不是你,你已经挨过这方面毒打就当写篇课程论文就行了
【TODO: 就这样吧
逆天,太逆天了
懂得都懂,不懂的还是不要懂了,怕恶心到你们。
如果还是好(shou)奇(jian)的话
(关键词:宿舍、 cosplay 交配、假阳具、安全检查、电热锅、狱卒)
其之间的组合模式大致为:
- 1. 2.- 我很后悔没有录音你知道吧
 
- 1. 3. 4. 5.- 发挥你们的想象力吧,看看这些概念是怎么组合的,最最恶心最最逆天的那个就更可能是真实情况
 
- 1. 6.- 什玉害
 
啊啊啊啊啊啊啊啊啊太逆天了啊,怎么那么恶心啊操
-400¥
说这个话题前,可能要提一下我关于代步的一个.. 看法吧。
就是本来我觉得电动车是很鸡肋的,在共享单车和共享电动车中选择的话,我会毫不犹豫的选择前者。
【TODO: 我要买电动车吗?
【TODO: 不咋地,也不便宜,但还是买了
【TODO: 这刹车都是个坏的,尼玛
【TODO: 根本没电,我自己滑回去的,还有班会,他妈的
【TODO: 狗屎
你是妇联主任吗?不对,你去死吧
这是什么,噢,关于冻鳗社的事儿。
【TODO: 想当女人的玩物,你要么得好看,要么得可爱,如果两样都占那就是王炸
【TODO: 你好懂!是妇联主任吗?
【TODO: 快毕业了你表白了?去死吧你
【TODO: 我觉得这很不负责
此前其他事情的进展
打排球打的
【TODO: 颠不了啊这
【TODO: 脚崴了
【TODO: 手指肿了
【TODO: 最后一次训练没赶上
23年十二月及之后
农业外交与农业外交官
其实在当天的时候,出了个小插曲。
简单来说,二手群里突然有人开始骂人。
被骂的一方是我们专业经常和我们一块儿上课的那帮本科生中的几个女生。
大意是… 忘了,就不提了。
当然是那种指名道姓问候长辈的骂。
反正我有股拱火的冲动,想说下午有老师来 A207 讲座,公管 22 级都回来,欢迎真人快打巴拉巴拉。
但是不想真的惹一身骚,就打消了那个念头。
这件小插曲就结束了。 确实让我这个二本的土狗长了见识开了眼界。
继续说那个老师,之前也是中农的,后来在联合国工作,粮农组织好像是。
看到第一排来了很多的老师,或面生或面熟。 我才意识到,这个讲座规模确实不小。
【TODO: 真那么牛吗?
【TODO: 我靠,是真大佬!
【TODO: “我天,你不是公管的?”
【TODO: “极品凤凰男?”,讲座和性别议题一点关系也没还搁着打什么?可真该死啊
【TODO: 没有公共空间,只有舆论阵地。
【TODO: 不愧是本科 985 的,这个水平确实🐂
【TODO: “你们如早上八九点钟的太阳”
雪堆上的 23 年
这个事儿还是从动漫社开始说。
【TODO: 我去吗?我没跳过宅舞啊
【TODO: 算了吧
【TODO: 群里没人鸟我
【TODO: 结束了捏
后面的事情不想再提,参见下面的小作文。
窗外下着大雪,差一个周考研。看着从往年340到415上满篇错的选择题和毫无头绪的主观题,还有只画了五分之一的思维导图,在倒计时七天的现在,我已经知道今年是什么结果了。深感郁闷,无视了贴在头顶上的“做一个不逃避的强者”,一个如同堂吉诃德面对风车的“强者”,在第二次开始复习的时候给自己加油的。
故此打算去看看社团联欢的庆演,但不知是不是 RP 大爆发,过了几分钟就歇场了,在倒数第一上台的某二刺螈社团的群里发表了“感言”。
毫无意外,没人理我。
也确实,在不着调的时间说着不着调的话,想回复也不知道怎么回复。意识到自己是处于一种很奇怪的境况,知道自己没有精力但还要做的一种心态下驱使的行为。之所以这么快意识到只是因为不是初犯了。
心中一种无名的悲哀升起来,走出行政楼,迎着大雪打算回宿舍,但是又觉得宿舍太过暖和,想借着冰天雪地让脑子冷静冷静,收拾下心情,好好睡觉。
可能确实是我点背,几十阶的楼梯走下来滑倒了两次,加上滑倒未遂有个五次了(这个世界上还是好楼梯多啊)。
当时就在想,“怎么不把我摔骨折啊,这样就不用考试了”。
但是很遗憾,除了屁股和腰有点疼,就只有衣服被雪沾到了。站起身来继续往前走,想找个可以坐的地方坐下来,歇一会儿。于是继续往前走。走了一两百米,在道路旁找到了一堆被铲车堆起来的雪堆。
腿脚走上去,裤子打头阵,发现雪堆意外的硬挺,于是屁股选择把全部重量梭哈上去。
赢了。
身体放松下来,神精系统的全部精力开始专注于对控制躯壳这一实体的批斗中。
开始的话题就如标题一样——23年有啥。
没什么好的。
说实话我真的很难把这一年和任何积极的词连起来。因为来自家庭、环境、人际的种种冲突与变故,大多让人很难高兴。虽然不能说没有,但是瑜不掩瑕,用一个字来讲就是“烂”。
在烂上加烂的大背景下,人也愈加的极端与魔怔,可残存的道德观念让我不表现出来。
两者相互搏斗,越来越强,变成一种向内的攻击,再加上自己之前干的一些混蛋事儿,变成了种种我不配的想法。
我想到了自己之前在学历的鄙视链中往往处于底层,结果现在因为运气来到了中🐉(破二本的土狗不配用🐉🧱的说法,那是正黄旗酒吧舞的👴才配叫的),结果反而变成了“爷”。为了对外人维持所谓天之骄子的人设,想要多与中🐉的本科生接触,但其实自己的学识以及 mindset 根本无法与之匹敌,或者叫配不上。
既然配不上,那么吃点亏是合理且正当的,一是非本科生非研究生本来就低人一等,二是我不配。
想着想着,社团联欢的人零零散散,挥着应援棒,好不快乐。
“怎么有个人坐在那里啊?”有个女声打断了批斗,“丢个雪球”,伴着比巴掌略大的东西滚了过来,碎成几块,就如同我脆弱的自尊一样。
真被人踩到脚底下了。
肇事者飞也似地跑开了,很欢快。
我呆了会儿,想了想,起身,往前跑到她们面前,终于在快到宿舍的时候逮到了。确定了事主后指着她说:“在别人很难过很郁闷的时候,朝人丢东西是很不礼貌的行为”。
我真的很想破口开骂,伴着负面的情绪,但我不知道该骂什么。
她们之前可能也没有意识到不对,朝我丢雪球也可能像是喝酒喝多了以为整个世界都像是以她们为主角的电影/话剧一样,可能直到我这个 NPC 声音发抖但还没有吼起来地跟她们说的时候才意识到。
在来回往复的“不好意思”中,我绕过去快步走开了。
我最开始不觉得有意思,我只觉得聒噪。不过后来不知为何,生出了往一堆小孩子搭起来的沙堡上拉屎后听着他们哇哇大哭的声音走开的联想。可能是满足了破坏了她们的好心情的阴暗面吧。
我也确实不是啥好东西。
写完好像已经半夜了,关灯、洗漱、睡觉。
考研
其实关于考研,我的想法一直很割裂。
因此对于这种混乱,出于某种逃避的心情,我一直很抗拒。
所以约等于没学。
【TODO: 真不如直接从行政楼上跳下去
【TODO: 老师,我受不了了,我想找您聊下
【TODO: 所以你来这能干什么?又没法保研又没法拿奖学金
【TODO: 我悟了,老师
【TODO: 雪干净的就像沙漠一样,走动的我之感觉到白色的色块在平滑的移动
【TODO: 明天要考研啊?噢
【TODO: 还行嘞,所以我是有戏了吗?
当最后一门,动物生理学与生物化学被端上来的那一刻,我就意识到我 24 考研彻底寄了。 我尝试在试题中寻找自己会的知识,就像德川被迫品沾了特制蘸料(大嘘)的蔬菜条还在像只兔子一样乖巧的咀嚼(悲)。
啥也不会,就是说。
收卷子的时候,我看着老师在看后面满篇的空白,好像很尴尬,但其实很麻木。
出考场的时候,我留意了我周围几个特别好看的小姐姐。
看考场门口的身份证号,她们好像比我还大。
背身份证和名字感觉和个变态一样。
“算了算了,反正没法认识。”于是我把准考证卷成一卷,下楼了。
提前离开考场的考生不能离开考点,所以我离开考试的楼去了隔壁楼的实验室。
进楼左拐再右拐。 半年多没见化学实验室,感觉莫名的亲切。
摆弄着通风橱的门、像猫咪一样摆弄着从水龙头里流出来的水。 偶尔和周围的人聊一聊。
我忘了我是怎么和那个老哥搭上话的。
【TODO: 你裸考就考全国农学老二?怎么敢的啊
【TODO: 哇,竟然碰到烟院的!我本部的!
【TODO: 不是不是,我就一破二本来读二学位的(摆手)
【TODO: 如果你要双一流的话,最好还是去东北
【TODO: 论文不顶用
【TODO: 简简单单,稳了
【TODO: 你竟然凶我!
就这么回家,躺一晚上。 很安静,感觉和死了一样。
权力结构与政治学
好像还上的主要就是政治学和公共管理学了。
政治学的东西在一个周内讲完,然后当堂考试,开卷。
我们政治学的老师是中农本部的,人发学院的吗?忘了。
老师也想赶紧回北京,我们也想快点上完课。
就这么一拍即合了。
【TODO: 高强度的上课
【TODO: Minecraft 社会实验中的权力斗争的动物性体现与《西周的灭亡》
【TODO: 开卷考试
纯社科领域的介入:论公共管理学的展示
其实不是我自己有占比很大的来做这个东西的想法。 因为我第一次做管理学作业忘记上课的关系,我没有自己的组。
虽然后来某同学说问问组长看看能不能把我拉他组去,但这事儿不了了之了。
可以理解,这种带着点让别人摘桃意味的事情,没人愿意分享给别人。
处处不留人,爷当个体户。
【TODO: 这个素材怎么来的
【TODO: 不成形的第一次汇报(重来)
【TODO: GPT4 + ChatPaper 的工作流
【TODO: 我紧张
【TODO: 这个展示有点晦涩
【TODO: 你讲了这么久啊哥
阳了?没
在临近期末的时候,我非常喜欢 Pachelbel 的一首歌。 帕赫贝尔就是那个写卡农的,他传世的曲子不算很多(相比巴赫)。
是刷油管的时候听到的。链接在 a playlist to romanticize studying math - YouTube(需要特殊网络信道)。
这个是用很多乐器演奏的一个版本。原曲好像是管风琴的,F 小调恰空(就是这一节上面的那个)。 很哀伤的曲子,就像上个学期一样,但是不至于绝望。
在不同的变奏中,仿佛有人在与我交流感慨之前的人或物,也有不知道自己将来去何处的茫然。 来到这里,并不意味着很多的问题得到了解决。
还是要靠自己。
就这么到考试周了。
【TODO: 六级:我觉得我这次可能过欸
考完的时候还在下雪好像。
但我突然是哪根筋抽了,想要躺在雪上,用身体压出一片形状。 像是蝴蝶一样。
无视其他人,直接进行了一个后背朝下的反向扑倒。
但是好像并不好看。
灰溜溜进宿舍了。
【TODO: 统计学,简简单单
【TODO: 发烧了
【TODO: 公共管理学咋办啊
下午考经济学,当时已经在发烧了。
虽然老师说是开卷,但是开卷也是需要懂得啊。
【TODO: 经济学寄了,啥也不会
在我背着舍友拿出抗原的时候,我已经做好了如果阳性直接回家的打算。 为什么要背着他们,是因为我不想让他们知道我怀疑我得新冠。
在过了许久之后发现只是一条杠的时候,悬着的心终于放下了。
不是新冠。
我好像回不去,所以让家里人来学校接我。 家离学校不算远,但独自坐车肯定是件很痛苦的事情。
反正,经过这样这样这样,那样那样的就回家了。
可能是因为发烧加上嗓子疼,也可能是因为别的什么原因,我很麻木。
不想谈恋爱,那些小姑娘看起来呆呆的
这其实是前几天的事儿,不算在学期内,但和别人分享在这的经历觉得挺有意思的。 所以也写下来。
算是休息了一下,缓过劲了。
和某位高中同学去吃烧烤,人巨多,但是她已经占到了位置。
所以就聊聊最近呗,毕竟认识了有五六年了。
她因为临近考研压力很大消化很不好,我当时就觉得可能是她的精神状态很差,就跟她说,如果你考完了还这样寒假我给你看看,用我偷学的中兽医还有因为感兴趣学的按摩艾灸啥的。
她还真考完没几天就彻底好了。
我上半个学期也很不好,心里很多隐藏的问题都暴露了出来,当时我一直有一种论断,我要么会完全的克服我的一切心理障碍,要么被其毁灭。
熬到学期末,没死,但也没有完全克服。
再加上她考的学校在湖南,不管考没考上以后都是聚少离多,除了交流感情还有一点点散伙饭的意味在里边。
虽然不便宜,但确实挺好吃的。
她听说我现在确实是有正儿八经九八五院校的学籍,就聊到了学校里边的美女帅哥。
虽说没有青农那么多吧,但是比例更大一些。可惜很多都有对象。
她窜捣我,说你怎么不谈一个?
我也不是特别想谈,去年上半年那个我花了三个月才缓出来啊。 而且我觉得跟我们一块儿上课的那些,也不是很聪明的样子。 最重要的是,我就待两年,我只是把这里当成提升自己心态与内核的跳板。 如果那样的话,是不是有点不负责了啊?
就摇摇头。
“不了不了,现在不想谈恋爱。而且也觉得她们有点呆呆的。”
“那可是九八五的学生啊?你这么说?”
“虽然但是,但确实感觉… 不是很那个… 就是没有在心态上被完全碾压还有降维打击的感觉”
“……吃饭吃饭。”
(夹了块羊排到自己的蘸料盘里)
结语
写的和个流水账似的。
虽说日期在一月底开始写的,但是花了零零散散好几个周。
总的来说,这个学期好像有不少变化,但又没没学到什么,除了有些时候很剧烈的情绪波动还说明着我心理问题不少。 还有就是意识到了非语言与非理智的因素在人际交往中的决定性作用,但是不是在这里的经历领悟的? 我不知道。
有一个方面就是光想巨累,很多事情不如交给潜意识。
希望下个学期能够有所改善吧。