hugsnow 发布的文章

我多想一觉醒来,
发现自己坐在高中课堂,
嘴角还挂着梦的痕迹,
茫然地凝视着黑板。
这些年的经历,
不过是一枕黄粱。

霎那之间,
人生蒙太奇在我眼前展开,
勾勒出昔日的画面。

我回想起牛场河坝上的较量,
那是青春的热血和冲动。
我看见橘子树下的酸甜,
那是荷尔蒙的悸动与的释放。
我回望晚自习后点点的灯火,
那是对过去的焦虑,
也是对未来的向往。

多少次幻想回到那个时光,
我依然记得当时的梦想,
还记得当时眼中的光芒。
多么希望再次回到校运会的赛场,
似乎后来我失去了那份集体荣誉的感觉。
多么渴望再次听恩师的教导和解答,
尽管有时一瞬的嫌弃铁难成钢,
似乎以后再也没有无亲无故的人那般真诚对待我了。
即便是那些不曾开花结果的暗恋,
也是那么的意味深长。

感谢你,余庆中学,
感谢你,那段八九至九二的光阴,
彼时彼地,
有我此生最多的回响。


今年乃母校余庆中学80周年校庆,班长马天马嘱吾作诗记之,是有此诗

  • 牛场河坝是当年学生之间解决矛盾的地方
  • 当年学校与牛场河之间有一片橘子林,谈恋爱的学生爱在此地出没

垂髫未解秋何起,不惑终明自此时。
王母挥簪流弱水,牛郎荷担叹瑶池。
天河阻断三生苦,银汉疏离两地痴。
纵使鹊桥来岁在,难平别后半分思。

本学期我得有上《计算机安全管理》课程,其中在上到Hydra暴力破解时,为了方便学生练习,需要生成若干账号。其中账号和密码都要从指定的字典文件中生成,所以就有了从文本文件中随机读取一行的需求,于是我就写了这样一个脚本:

# 获取文件的行数
LINECOUNT=`wc -l rkolin.txt|awk '{printf $1}'` 
# 随机选第LINE行
LINE=$(( RANDOM % $LINECOUNT ))
# 输出前LINE行的最后一行
head -n $LINE rkolin.txt|tail -n 1 

这个脚本是能够完成任务的要求的,不过我想知道chatGPT怎么看,于是有了下面的对话:

Q:BASH: get a random line from a text file

A:You can use the shuf command in Bash to shuffle the lines of a text file and then use head to get the first line. Here's an example:

shuf -n 1 < filename.txt

This will shuffle the lines of filename.txt and then output the first line. The -n option specifies the number of lines to output, in this case just one.

简直就是最好的老师啊!如果这个东西普及了,对于我们的学习多么的方便!新时代真的要来了,现在担心的就是互联网上的语料用完之后能不能有创造性的答案出现,如果真的能,那就真的是一个新时代了。

本期末,省里面组织一次了考试,考前下发了复习材料。为了在练习的时候快速查询,排除干扰,我准备用网页做一个查询程序。

材料中只有单选和多选两种题型,材料大致如下。

2.普遍开展项目教学、()、模块化教学,推动现代信息技术与教育教学深度融合,提高课堂教学质量。
答案:C
A.仿真教学  
B.模拟教学  
C.情境教学  
D.场景教学
3.职业培训包括()及其他职业性培训,可以根据实际情况分级分类实施。
答案:ACD
A.就业前培训
B.学校职业培训
C.在职培训
D.再就业培训

具体思路如下:

首先、把文本转换成HTML网页。但是直接转换有点麻烦,所以我准备多一个步骤,从文本到Markdown,再把Markdown导出到网页。

文本到Markdown

  1. 每个试题前面加一个回车,这样每个试题就是一个单独的段落。使用支持正则表达式替换的编辑器即可。查找目标 ^(?=\d+\.),替换成 \n。意思是:查找后面是连续数字加点的位置,替换成回车。
  2. 每个选项前面加上一个- ,这样选项变成了列表。同样用正则表达式替换完成,查找目标 ^(?=\s*[A-E]\.),替换成 - 。和上面的类似。

完成后即可用Markdown编辑软件导出到HTML

HTML的处理

为了方便处理,最好把试题和选项列表包围起来。这个就简单了,直接查找替换。

  1. 删除</p>
  2. <p>替换成<div>
  3. </ul>替换成</ul></div>

剩下的就是网页编程了,很简单,相关程序如下:

部分网页:

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>考题查询</title>
    <script src="jq.js"></script>
    <script src="main.js"></script>
    <link rel="stylesheet" href="main.css">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
</head>
<body>
<form>
    <input type="text" id="keyword"> 
    <label><input type="checkbox" id="chkOne">单选 |</label>
    <label><input type="checkbox" id="chkMore">多选</label>
    <button id="btnQury" type="button">搜索</button>    
</form><hr>
<div>二十大报告指出,从现在起,中国共产党的( )就是团结带领全国各族人民全面建成社会主义现代化强国、实现第二个百年奋斗目标,以中国式现代化全面推进中华民族伟大复兴。
答案:A

<ul>
<li>A.中心任务</li>
<li>B.指导思想</li>
<li>C.工作要求</li>
<li>D.年度任务</li>
</ul></div>

<div>二十大报告提出,建设现代化产业体系,坚持把发展经济的着力点放在( )上,推进新型工业化,加快建设制造强国、质量强国、航天强国、交通强国、网络强国、数字中国。
答案:A

<ul>
<li>A.实体经济</li>
<li>B.虚拟经济</li>
<li>C.股票经济</li>
<li>D.网红经济</li>
</ul></div>
</body>
</html>

样式表:

div {
    display: none;
}
div.show {
    display: block;
}
li.ok {
    color: #F00;
}

由于开始想用原生js,后面发现不变,又使用了JQ,所以程序风格不统一,也没有修改。Javascript文件:

function init(){
    //标记正确答案
    var paras = document.querySelectorAll("div");
    for(var i in paras) {
        var txt = paras[i].textContent;
        if(!txt)continue;
        txt.match(/答案:([A-H]+)/);
        var answer = RegExp.$1
        var c1 = answer.length > 1 ? "more" : "one";
        var lis = paras[i].children[0].children;
        for (var j=0;j<=4;j++) {
            var c = String.fromCharCode(0x41 + j);
            if (answer.match(c)) lis[j].classList.add('ok')
            
        }
        paras[i].classList.add(c1);
        
        
    }
}
$(function($){
    init();
    $('#keyword').on("focus",function(){this.select()});
    $('#btnQury').on("click",searchHandle);
    $("form").on("submit",function(){return false})
    $("#keyword").on("keypress",function(e){
        if(e.keyCode == 13)searchHandle(e);
    });
});

function searchHandle(e){
    $('div').removeClass("show");
    var key = $("#keyword").val();
    if(key.match(/^\s*$/))return;
    var range = '';
    if ($("#chkOne").get(0).checked && !$("#chkMore").get(0).checked) {
        range = '.one'
    }
    if (!$("#chkOne").get(0).checked && $("#chkMore").get(0).checked) {
        range = '.more'
    }
    $('div'+range).each(function(index,elem){
        if(elem.textContent.match(key))
            elem.classList.add("show")
    });
}

FROM alpine:3.17
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && \
apk update && \
apk add --no-cache nodejs npm && \
npm install -g cnpm --registry=https://registry.npm.taobao.org && \
cnpm install -g reveal-md
EXPOSE 1948/tcp
CMD reveal-md /markdown-files
VOLUME /markdown-files
  1. 如果不是在国内,可以不修改apk源和npm源的位置。
  2. hexo等可以仿照这个文件生成