ASUKA

ASUKA 查看完整档案

填写现居城市University of the Incarnate Word  |  哲学 编辑  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

ASUKA 赞了文章 · 2月12日

如何优雅地高效,心情良好地完成审核

场景

最近解锁众审中心的思否用户 fk(@ForkKILLET) 审核很勤快。
但是某些用户持续发表大量相同文章,部分排版还很乱。fk 审核时感到烦躁,心情很不良好。真正要审的文章排在后面,大家都很忙,没时间把垃圾文章一个个否掉。根据 fk 的观察,其他用户审核频率似乎也有所下降。

fk 决定使用脚本解决问题。需求很简单,能配置一些规则,滤掉部分确定的文章就好了。

整了什么活

SFAR 思否(文章)自动审核脚本。可以按需匹配作者用户名、文章标题、文章内容来自动给出审核结果和(发对的)原因。
Github repo:https://github.com/ForkFG/SFAR
GreasyFork: https://greasyfork.org/zh-CN/...
今天刚推,文档只有 配置 一篇,内容如下

储存

配置以JSON格式存储在脚本管理器 TamperMonkey 中。
脚本第一次执行时,会加载默认配置,否则会读取用户所保存的配置,并将配置写入网页右侧 SFAR 面板的输入区域中。
保存 按钮用于保存输入区域中的配置。

默认

{
    "rules": [
        {
            "title-equal": "test",
            "result": "reject",
            "why": "推广广告信息"
        }
    ],
    "auto": {
        "execute": true,
        "confirm": true,
        "next": false
    }
}

说明

JSON 中有 2 个配置项:rulesauto,其中只有 rules 是必须的。

rules

包含多个对象的数组,每个对象描述一条规则
每条规则包含 2~3 项,分别描述:如何匹配态度。当态度为反对时,还需指定原因
匹配项的键名是用连字符 - 隔开的两个单词。
前者描述匹配范围,有 3 个选项:文章标题 title,文章内容 text,文章作者 author
后者描述匹配方式,有 3 个选项:相等 equal,包含 include,正则 match
例如 "title-match": "t(est)+" 即表示——在标题中匹配正则表达式 /t(est)+/,若正则测试成功,则词条规则生效。

态度result,值有三种:反对同意中立。每种均可用 0~2 的整数指代,且有别名,见下表:

反对同意中立
rejectpassignore
acceptmonkey

原因why,值有 7 种:帖子式文章偏离社区主题内容及排版差推广广告信息违规内容不友善内容。每种均可用 0~6 的整数指代。

auto

包含 3 个布尔值的对象。
execute,描述是否网页加载后自动执行
confirm,描述执行后是否需要选择 好 / 取消确认
next,描述是否执行后立即前往下一条。 由于作者手速的原因,此项尚不稳定,未经测试。反正就等三秒,安啦。

使用截图

1
我也不知道为什么可以审核自己的文章啊 [发抖]

别的

希望 SF 社区越来越好(
希望某些用户自动发文前后检查一下……

EOF

查看原文

赞 1 收藏 0 评论 0

ASUKA 赞了回答 · 2月12日

解决疑问 ! 关于逻辑或

  1. 报错了,你要看错误信息,根据错误信息去检查你的代码。结果你在提问的时候都不贴错误信息,说明你 debug 这里还不过关。
  2. 访问 undefined 对象的属性导致报错其实很常见,多检查
  3. 可以考虑使用 optional chaining 运算符 ?.,即 a?.b?.c,这样每次都会检查属性是否存在,并且及时短路避免报错

关注 3 回答 2

ASUKA 关注了用户 · 2月11日

weakish @weakish

a vigorously lazy deadbeat with matured immaturity

关注 816

ASUKA 赞了文章 · 2月11日

Vanilla JS——世界上最轻量的JavaScript框架(没有之一)

Vanilla JS 是一个快速、轻量级、跨平台的JavaScript框架。我们可以用它构建强大的JavaScript应用程序。

vanilla

介绍

Vanilla JS小巧而符合直觉。

有哪些企业采用了Vanilla JS?很多,很多,下面只是其中最知名的一部分:

  • Facebook
  • Google
  • YouTube
  • Yahoo
  • Wikipedia
  • Windows Live
  • Twitter Amazon
  • LinkedIn
  • MSN
  • eBay
  • Microsoft
  • Tumblr
  • Apple
  • Pinterest
  • PayPal
  • Reddit
  • Netflix
  • Stack Overflow

实际上, 使用 Vanilla JS 的网站比使用jQuery、Prototype JS、MooTools、YUI 和 Google Web Toolkit 的网站加起来还要多.

模块化

VanillaJS包括如下模块,下载安装时可以只选择需要的模块,以便提高性能。

  • 核心功能
  • DOM(遍历/选择器)
  • 基于原型的对象系统
  • AJAX
  • 动画
  • 事件系统
  • 正则表达式
  • 函数作为第一类对象
  • 闭包
  • 数学库
  • 数组库
  • 字符串库

开始使用

Vanilla JS是世界上最轻量的javascript 框架(沒有之一),使用我们的产品部署策略,你的用户的浏览器向你的站点发送请求前就已经把Vanilla JS加载在浏览器里了。

使用Vanilla JS只需在应用的HTML里加入这行:

<script data-original="path/to/vanilla.js"></script>

当你部署你的应用的时候,使用这个更快的方法:


你没看错!没有任何代码,Vanilla JS 太流行了,所有的浏览器在十年前就已经内置了它。

性能比较

看看Vanilla JS到底有多快:

根据ID获取DOM元素

框架代码次数/秒
Vanilla JSdocument.getElementById('test-table');12,137,211
Dojodojo.byId('test-table');5,443,343
Prototype JS$('test-table')2,940,734
Ext JSdelete Ext.elCache['test-table']; Ext.get('test-table');997,562
jQuery$jq('#test-table');350,557
YUIYAHOO.util.Dom.get('test-table');326,534
MooToolsdocument.id('test-table');78,802

根据标签名获取DOM元素

框架代码次数/秒
Vanilla JSdocument.getElementsByTagName("span");8,280,893
Prototype JSPrototype.Selector.select('span', document);62,872
YUIYAHOO.util.Dom.getElementsBy(function(){return true;},'span');48,545
Ext JSExt.query('span');46,915
jQuery$jq('span');19,449
Dojodojo.query('span');10,335
MooToolsSlick.search(document, 'span', new Elements);5,457

代码示例

下面是一些常见任务的例子,可以看下Vanilla JS和jQuery的区别:

淡出元素

Vanilla JS

var s = document.getElementById('thing').style;
s.opacity = 1;
(function fade(){(s.opacity-=.1)<0?s.display="none":setTimeout(fade,40)})();

jQuery

<script data-original="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$('#thing').fadeOut();
</script>

AJAX请求

Vanilla JS

var r = new XMLHttpRequest();
r.open("POST", "path/to/api", true);
r.onreadystatechange = function () {
  if (r.readyState != 4 || r.status != 200) return;
  alert("Success: " + r.responseText);
};
r.send("banana=yellow");

jQuery

<script data-original="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$.ajax({
  type: 'POST',
  url: "path/to/api",
  data: "banana=yellow",
  success: function (data) {
    alert("Success: " + data);
  },
});
</script>

致不敢相信的读者: 请把“Vanilla JS 是世界上最轻量的JavaScript框架(没有之一)”这句话读三遍。如果还是不信的话,再把下面这句话读三遍:“无论过去、现在还是未来,Vanilla JS 都是世界上最轻量的JavaScript框架(没有之一)!”

查看原文

赞 54 收藏 81 评论 60

ASUKA 赞了回答 · 2月10日

解决C语言函数局部变量回收问题

局部变量的地址是在堆栈上,其实并没有没有回不回收的概念,你三次test_add都是在同一层堆栈调用的,自然地址都是一样的
你要是像评论里说的那样递归去调用(或者其他方法),让test_add在不在同一层堆栈,申请到的地址就不一样了
想要多了解原理可以学学汇编相关的知识
而且我看了看你的需求,你add一个新节点不应该使用局部变量(局部函数退出后,这块内存随时可能会被别处使用,就会出问题),而是应该手动申请一块新内存去给新节点使用

关注 2 回答 1

ASUKA 赞了回答 · 2月8日

解决terminal 中 shell <Ctrl-U> 这个 u 是什么的缩写

如果你指的是类 Unix 系统中 Shell 的常见快捷键,那么是 Undo 的意思(撤回),效果就是擦除从当前光标位置到行首的全部内容。

关注 1 回答 1

ASUKA 赞了回答 · 2月8日

解决为什么谷歌搜索改了语言设置以后就搜不到了

我明白能搜到的 就是切换了语言之后,排名大幅的下降了 很不解

关注 2 回答 2

ASUKA 赞了回答 · 2月8日

解决为什么谷歌搜索改了语言设置以后就搜不到了

给个网站地址,不要让大伙猜。

image.png

关注 2 回答 2

ASUKA 赞了回答 · 2月8日

Vue3什么时候发布?

去年9月vue3的核心就正式发布了,现在周边也陆陆续续都进入正式版了
image.png


你得看vue3官网这边的消息
https://github.com/vuejs/vue-...
image.png
npmjs上还显示vue2是因为vue这个仓库的latest标签对应的是vue2的版本
image.png

关注 2 回答 2

ASUKA 赞了回答 · 2月8日

python 在windows 可以找到这个utils package ,但是在linux 报错如下,求问

Pycharm 设置pythonPath的环境变量douyin,也就是项目根目录 ,这个目录下的所有 python package 都可以被直接import

但是linux下没有pythonPath, 所以无法引入

关注 3 回答 2

认证与成就

  • 获得 7 次点赞
  • 获得 8 枚徽章 获得 0 枚金徽章, 获得 1 枚银徽章, 获得 7 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2020-07-24
个人主页被 604 人浏览