EPT 考试中查询单词脚本的设计与实现
EPT 考试中查询单词脚本的设计与实现由于疫情,本学期的 EPT 英语测试改为在学生电脑上下载考试机客户端程序进行。不幸的是,该客户端程序存在许多漏洞,比如没有强制锁定桌面,没有强制锁定输入法,没有限制后台程序等等,以及还有许多不人性化的 bug 存在,收获差评无数。最初,有同学发现在考试客户端中欧陆词典可以正常运行,在这个尝试的启发下,我开始尝试开发一个可以在 EPT 考试软件运行过程中,隐蔽查词的脚本。
可行性分析我们首先进行可行性分析。由于考试系统的设计,考试客户端会强制置顶显示在屏幕上,然而置顶并不意味着不能对除了考试程序窗口之外的窗口进行操作。我们设想一块布蒙在眼前,但是双手却可以自由操控布后的东西。这是因为程序没有锁死考试屏幕为唯一的活动屏幕,这意味着你仍然尝试可以通过命令,打开其他窗口,并且设定它为新的活动窗口,这样你甚至可以操作鼠标键盘对其进行输入输出交互。更加令人欣喜地是,此时的考试窗口(仍然保持置顶状态)成了一个可以掩盖你的操作的挡板,只有你知道你在做什么,监考人员并无法发现你的操作。
脚本设计与实现经过上述分析,我们了解了绕过置顶的考试窗口进行操作的可能性,我们便 ...
Learn Git Branching 学习笔记
分支管理Git branch
目的:“我想基于这个提交以及它所有的父提交进行新的工作。”
创建一个新分支的方法:
git branch <name>
切换分支的方法:
git checkout <name>
创建一个新分支并切换到该分支上:
git checkout -b <branch-name>
切换完以后,会在原地出现一个新分支,也就是基于当前所在提交的一个新分支出现了。
Git merge
目的:“我要把这两个父节点本身及它们所有的祖先都包含进来。”
合并分支:
在当前的分支上,执行: git merge <name> 会将 name 分支合并入 main,生成一次新的提交,而 name 分支将保持在原地不动
Git rebase
目的:我们某个分支上的工作全部转移到另一个分支上, 执行 rebase 指令后,所在分支的一个复制的将直接以对应分支为父节点,且会切换到这个复制的分支上(原分支仍会存在)
rebase 分支: git rebase <name> 即将当前分支转移 ...
Vue watch 语法
Vue 监听父组件变化用法 — Watch 的用法我们首先要明白实现的一个组件的目的。
如果一个组件只需要父组件向其中初始传入一次值,那么再props里填写需要接受的参数以后,可以直接在template里面使用 this.name 直接使用props中接收到的参数使组件运作,前提是 不更改这个值 ,否则会报错
如果这个组件非常依赖父组件传入的数据工作,那么可能有一些内部的函数需要变动props中的值。如果变动只是为了组件内部的运行,而不需要向父组件发送更改props的数据,我们只需使用本文提到的watch参数就可以,如果需要同步更改父组件的数据,那么需要使用 emit 方法,本文暂不讨论。
Watch 的用法
watch方法监视了一个参数的变化,如果这个参数变化了,那么就做以下的事情
123456789101112131415161718export default { props: { prop1: <type1>, prop2: <type2> }, data () { return { examp ...
Django 中的路由语法学习
Django 中的路由语法学习在 Django 模板中使用 url 路由当我们同样需要在 django app 中使用到动态路由的功能的时候,我们可以在 urls.py 中,使用 <int:pk> 的方法将 url 里面的变量传入对应的 controller 手中。
如果要在模板中这样写,我们可能需要对应的模板语言
方法一:静态语言
在一个模板中使用 <a> 标签跳转的时候,直接写出需要跳转到的 url
12345678{% for s in snippets %}<div> // 转到/s.id目录 <a href="/{{s.id}}"> Visit -> </a><div><div> <a href="/about"> About Page </a><div>
缺点就是必须手动更改许多内容,无法实现同步
方法二:使用url 方法 ...
Vue router 语法学习
Vue router 路由语法router-view在 main.js 中与 Vue 实例绑定的 <div id="app"> 中,使用 router-view 展示页面元素
router-view 可以使页面跳转到其他页面的时候,不会全部刷新,而是替换 <router-view> 中的内容,例如如下的 App.vue 中,
12345678910<template> <div id="app"> <nav> <router-link to="/auth/login">Login</router-link> | <router-link to="/auth/register">register</router-link> </nav> <router-view/> </div></template>
(styl ...
Vuex & Vue router 语法学习
Vuex 和 Vue routerVuexVuex 用来管理网站上的公共数据,比如用户变量属性等等。
Vuex 结构
Vuex 中存储了这些不同的对象:
1234567export default new Vuex.Store({ state: {}, getters: {}, mutations: {}, actions: {}, mudules: {}})
state 是需要 vuex 保存的状态,所有组件可以通过一些方法得到它 getter:类似 computed 参数,对 state 里面的变量做一些修改后,产生的新参数。同理,如果一个参数完全依赖于 state 中的一些值
mutations 里面定义了许多函数,这个函数只允许输入当前的一些 state,输出新的 state,相当于更新了 state actions:完成异步的功能
我们可以这样在组件中使用 Vuex:
获取 state 里的参数 ...
Django 的鉴权操作
(往期补档)
Topic: Authorization-token with django在之前的学习中,我们已经熟悉了如何使用 django 搭建一个基本的,可以响应用户请求并提供静态页面的网页后端。不过,如果需要制作一个方便用户登录的网站,需要用到一定的验证方法。如何确定正在访问的使用者是已经登录的用户?如何确保当前用户具有权力查看某些内容?我们需要一种鉴权手段核验身份。因此,我们需继续学习和鉴权有关的知识。
AAAAAA = Authentication + Authorization + Audit
Audit: 记录用户操作
TODO: request -> Authorization token Authetication -> is_authenticated? -> controllers
Authorize with django鉴权的方法不止一种,我们今天学习的是使用 token 鉴权的方法
Add a token model在执行完创建 app 和注册 app 的工作之后,为了实现用 token 鉴权的目的,我们需要新建一个 token ...
使用django构建网页
使用django搭建网页本笔记中,django项目的文件模型为-mainproject –app=snippets
定义模型以及如何使用模型:
1234567891011121314151617181920212223242526272829303132333435class Snippet(models.Model): code= models.TextFiled() language = models.CharFieild(max_length=20)#如何使用:from snippets.models import Snippet#创建:Snippet.objects.create(language="sdsd",c0de="sdfsd")#选择所有Snippet.objects.all() #根据id选择Snippet.objects.get(pk={number}) #pk就是id#赋给变量:snip = Snippet.objects.get(pk=2)#读取模型的属性print(snip ...
整理配置 Cmake 的若干问题
(往期补档)最近使用clion的时候接触到了使用Cmake编译C++项目的方法,然而官方文档中的解释并不简单明了,故整理一下关于 cmake 的配置问题,加强记忆。
一个 C++ 项目的格式可能长这样
1234567- project_demo - lib1 - cmake.txt - module1.cpp - module2.h - cmake.txt - main.cpp
模块内 cmake 文件的写法将是:
1add_library(lib1 module1.cpp module2.h) // 生成库文件
整个项目的 cmake 文件的写法将是:
1234567891011//include_directory(lib1) 是头文件的引用目录,可以不写add_subdirectory(lib) // 添加其他需要编译的子目录// 或者使用://link_directories(库目录)add_executable(project_demo main.cpp)target_link_libraries(project_demo lib1) // 链接自定义库文件//ta ...
About me
博客的主人还没想好,或许等他有空了就会有了。