文章目录 [隐藏]
虽然好像没什么用的样子…… 平时写着玩的。
温州方言数据库修正
温州方言数据库是温州市图书馆建设的,收录温州本土方言词汇与语音信息的数据库。但是其界面杂乱而且仅支持 IE 浏览器播放音频,所以咱就写了个油猴脚本。数据库链接请点击我。
猴赛雷啊!以下是代码:
#点我查看代码
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// ==UserScript==
// @name 温州方言数据库音频播放修正
// @namespace http://kaaass.net/
// @version 0.1
// @description 修正温州方言数据库不能播放音频
// @author KAAAsS
// @match http://wzhzy.wzlib.cn/wzh/*
// @grant none
// @require https://code.jquery.com/jquery-2.1.4.min.js
// ==/UserScript==
(function() {
'use strict';
$(function(){
/*
模板
*/
var modal = '<nav class="navbar navbar-default">'+
' <div class="container-fluid">'+
' <div class="navbar-header">'+
' <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">'+
' <span class="sr-only">Toggle navigation</span>'+
' <span class="icon-bar"></span>'+
' <span class="icon-bar"></span>'+
' <span class="icon-bar"></span>'+
' </button>'+
' <a class="navbar-brand" href="//wzlib.cn/"> 温州市图书馆 </a>'+
' </div>'+
' <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">'+
' <ul class="nav navbar-nav">'+
' <li class="active"><a href="/"> 温州话资源库 <span class="sr-only">(current)</span></a></li>'+
' </ul>'+
' <form action="Result.aspx" method="get" class="navbar-form navbar-right">'+
' <div class="form-group">'+
' <input name="SearchEdit" type="text" class="form-control" placeholder="输入需要查询的内容">'+
' <select name="SearchTypeC" class="form-control">'+
' <option> 单字 </option>'+
' <option> 词汇 </option>'+
' </select>'+
' </div>'+
' <button type="submit" class="btn btn-default"> 搜索 </button>'+
' </form>'+
' </div>'+
' </div>'+
'</nav>'+
'<div class="container-fluid text-center" style="margin-top:30px; margin-bottom:40px;">'+
' <h1> 温州方言数据库检索系统 </h1>'+
'</div>';
if (location.search === '') {
modal += '<ol class="breadcrumb" style="width: 85%; margin-left: auto; margin-right: auto; margin-bottom: -15px;">'+
' <li><a href="//wzlib.cn/"> 温州市图书馆 </a></li>'+
' <li><a href="/"> 温州话资源库 </a></li>'+
' <li class="active"> 温州方言数据库检索系统 </li>'+
'</ol>';
} else {
modal += '<ol class="breadcrumb" style="width: 85%; margin-left: auto; margin-right: auto; margin-bottom: -15px;">'+
' <li><a href="//wzlib.cn/"> 温州市图书馆 </a></li>'+
' <li><a href="/"> 温州话资源库 </a></li>'+
' <li><a href="/wzh"> 温州方言数据库检索系统 </a></li>'+
' <li class="active"> 检索结果 </li>'+
'</ol>';
}
/*
引入 bootstrap
*/
function getParam(key) {
function GetRequest() {
var url = location.search;
var theRequest = {};
if (url.indexOf("?") != -1) {
var str = url.substr(1);
var strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=strs[i].split("=")[1];
}
}
return theRequest;
}
return GetRequest()[key];
}
var mode = (getParam('SearchTypeC') === '%E8%AF%8D%E6%B1%87') + 1;
console.debug(' 当前请求模式:'+[' 单字',' 词汇'][mode - 1]);
$('head').append('<link href="http://v3.bootcss.com/dist/css/bootstrap.min.css" rel="stylesheet">')
.append('<link href="data:text/css;charset=utf-8," data-href="http://v3.bootcss.com/dist/css/bootstrap-theme.min.css" rel="stylesheet" id="bs-theme-stylesheet">')
.append('<style>html, body, * { font-family: "Microsoft YaHei" ! important; }</style>');
$.getScript('//cdn.bootcss.com/bootstrap/2.3.2/js/bootstrap.min.js');
$('br,span').remove();
$('table').addClass('table').addClass('table-striped').css('width','85%').css('margin-left','auto').css('margin-right','auto');
$('body').prepend(modal);
$('.style12').width('220px');
$('form').addClass('form-inline');
$('select').addClass('form-control').children('option:eq('+(mode-1)+')').attr('selected','selected');
$('input[type=text]').addClass('form-control');
$('input[type=submit]').addClass('btn').addClass('btn-primary');
/*
修正音频播放
*/
function appendAudio($dest, url) {
$dest.append('<audio controls height="30" width="50"><source src="'+url+'" type="audio/x-wav"><embed height="30" width="50" src="'+url+'"></audio>');
}
function getToneEntry(tone) {
return '.' + (10 - tone) + ';';
}
function replaceEntry(org) {
org = org.replace(/11|22|33|44|55/g,function(met){return {'11':'1','22':'2','33':'3','44':'4','55':'5'}[met];});
return org.replace(/1|2|3|4|5/g,function(met){return {'1':getToneEntry(1),'2':getToneEntry(2),'3':getToneEntry(3),'4':getToneEntry(4),'5':getToneEntry(5)}[met];});
}
$('.style15').each(function(i, el){
if (i===0) return;
$(el).html(replaceEntry($(el).text()));
});
$('.style17').each(function(i, el){
if (i===0) return;
var url = $(el).children('object').children('param[name=Filename]').val();
console.debug(' 解析声音文件:'+url);
$(el).children().remove();
appendAudio($(el),url);
});
});
})();
// ==UserScript==
// @name 温州方言数据库音频播放修正
// @namespace http://kaaass.net/
// @version 0.1
// @description 修正温州方言数据库不能播放音频
// @author KAAAsS
// @match http://wzhzy.wzlib.cn/wzh/*
// @grant none
// @require https://code.jquery.com/jquery-2.1.4.min.js
// ==/UserScript==
(function () {
'use strict';
$(function (){
/*
模板
*/
var modal = '<nav class="navbar navbar-default">'+
' <div class="container-fluid">'+
' <div class="navbar-header">'+
' <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">'+
' <span class="sr-only">Toggle navigation</span>'+
' <span class="icon-bar"></span>'+
' <span class="icon-bar"></span>'+
' <span class="icon-bar"></span>'+
' </button>'+
' <a class="navbar-brand" href="//wzlib.cn/"> 温州市图书馆 </a>'+
' </div>'+
' <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">'+
' <ul class="nav navbar-nav">'+
' <li class="active"><a href="/"> 温州话资源库 <span class="sr-only">(current)</span></a></li>'+
' </ul>'+
' <form action="Result.aspx" method="get" class="navbar-form navbar-right">'+
' <div class="form-group">'+
' <input name="SearchEdit" type="text" class="form-control" placeholder="输入需要查询的内容">'+
' <select name="SearchTypeC" class="form-control">'+
' <option > 单字 </option>'+
' <option > 词汇 </option>'+
' </select>'+
' </div>'+
' <button type="submit" class="btn btn-default"> 搜索 </button>'+
' </form>'+
' </div>'+
' </div>'+
'</nav>'+
'<div class="container-fluid text-center" style="margin-top:30px; margin-bottom:40px;">'+
' <h1 > 温州方言数据库检索系统 </h1>'+
'</div>';
if (location.search === '') {
modal += '<ol class="breadcrumb" style="width: 85%; margin-left: auto; margin-right: auto; margin-bottom: -15px;">'+
' <li><a href="//wzlib.cn/"> 温州市图书馆 </a></li>'+
' <li><a href="/"> 温州话资源库 </a></li>'+
' <li class="active"> 温州方言数据库检索系统 </li>'+
'</ol>';
} else {
modal += '<ol class="breadcrumb" style="width: 85%; margin-left: auto; margin-right: auto; margin-bottom: -15px;">'+
' <li><a href="//wzlib.cn/"> 温州市图书馆 </a></li>'+
' <li><a href="/"> 温州话资源库 </a></li>'+
' <li><a href="/wzh"> 温州方言数据库检索系统 </a></li>'+
' <li class="active"> 检索结果 </li>'+
'</ol>';
}
/*
引入 bootstrap
*/
function getParam (key) {
function GetRequest () {
var url = location.search;
var theRequest = {};
if (url.indexOf ("?") != -1) {
var str = url.substr (1);
var strs = str.split ("&");
for (var i = 0; i < strs.length; i ++) {
theRequest [strs [i].split ("=")[0]]=strs [i].split ("=")[1];
}
}
return theRequest;
}
return GetRequest ()[key];
}
var mode = (getParam ('SearchTypeC') === '% E8% AF%8D% E6% B1%87') + 1;
console.debug (' 当前请求模式:'+[' 单字 ',' 词汇 '][mode - 1]);
$('head').append ('<link href="http://v3.bootcss.com/dist/css/bootstrap.min.css" rel="stylesheet">')
.append ('<link href="data:text/css;charset=utf-8," data-href="http://v3.bootcss.com/dist/css/bootstrap-theme.min.css" rel="stylesheet" id="bs-theme-stylesheet">')
.append ('<style>html, body, * { font-family: "Microsoft YaHei" ! important; }</style>');
$.getScript ('//cdn.bootcss.com/bootstrap/2.3.2/js/bootstrap.min.js');
$('br,span').remove ();
$('table').addClass ('table').addClass ('table-striped').css ('width','85%').css ('margin-left','auto').css ('margin-right','auto');
$('body').prepend (modal);
$('.style12').width ('220px');
$('form').addClass ('form-inline');
$('select').addClass ('form-control').children ('option:eq ('+(mode-1)+')').attr ('selected','selected');
$('input [type=text]').addClass ('form-control');
$('input [type=submit]').addClass ('btn').addClass ('btn-primary');
/*
修正音频播放
*/
function appendAudio ($dest, url) {
$dest.append ('<audio controls height="30" width="50"><source src="'+url+'" type="audio/x-wav"><embed height="30" width="50" src="'+url+'"></audio>');
}
function getToneEntry (tone) {
return '.' + (10 - tone) + ';';
}
function replaceEntry (org) {
org = org.replace (/11|22|33|44|55/g,function (met){return {'11':'1','22':'2','33':'3','44':'4','55':'5'}[met];});
return org.replace (/1|2|3|4|5/g,function (met){return {'1':getToneEntry (1),'2':getToneEntry (2),'3':getToneEntry (3),'4':getToneEntry (4),'5':getToneEntry (5)}[met];});
}
$('.style15').each (function (i, el){
if (i===0) return;
$(el).html (replaceEntry ($(el).text ()));
});
$('.style17').each (function (i, el){
if (i===0) return;
var url = $(el).children ('object').children ('param [name=Filename]').val ();
console.debug (' 解析声音文件:'+url);
$(el).children ().remove ();
appendAudio ($(el),url);
});
});
})();
// ==UserScript== // @name 温州方言数据库音频播放修正 // @namespace http://kaaass.net/ // @version 0.1 // @description 修正温州方言数据库不能播放音频 // @author KAAAsS // @match http://wzhzy.wzlib.cn/wzh/* // @grant none // @require https://code.jquery.com/jquery-2.1.4.min.js // ==/UserScript== (function() { 'use strict'; $(function(){ /* 模板 */ var modal = '<nav class="navbar navbar-default">'+ ' <div class="container-fluid">'+ ' <div class="navbar-header">'+ ' <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">'+ ' <span class="sr-only">Toggle navigation</span>'+ ' <span class="icon-bar"></span>'+ ' <span class="icon-bar"></span>'+ ' <span class="icon-bar"></span>'+ ' </button>'+ ' <a class="navbar-brand" href="//wzlib.cn/">温州市图书馆</a>'+ ' </div>'+ ' <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">'+ ' <ul class="nav navbar-nav">'+ ' <li class="active"><a href="/">温州话资源库 <span class="sr-only">(current)</span></a></li>'+ ' </ul>'+ ' <form action="Result.aspx" method="get" class="navbar-form navbar-right">'+ ' <div class="form-group">'+ ' <input name="SearchEdit" type="text" class="form-control" placeholder="输入需要查询的内容">'+ ' <select name="SearchTypeC" class="form-control">'+ ' <option>单字</option>'+ ' <option>词汇</option>'+ ' </select>'+ ' </div>'+ ' <button type="submit" class="btn btn-default">搜索</button>'+ ' </form>'+ ' </div>'+ ' </div>'+ '</nav>'+ '<div class="container-fluid text-center" style="margin-top:30px; margin-bottom:40px;">'+ ' <h1>温州方言数据库检索系统</h1>'+ '</div>'; if (location.search === '') { modal += '<ol class="breadcrumb" style="width: 85%; margin-left: auto; margin-right: auto; margin-bottom: -15px;">'+ ' <li><a href="//wzlib.cn/">温州市图书馆</a></li>'+ ' <li><a href="/">温州话资源库</a></li>'+ ' <li class="active">温州方言数据库检索系统</li>'+ '</ol>'; } else { modal += '<ol class="breadcrumb" style="width: 85%; margin-left: auto; margin-right: auto; margin-bottom: -15px;">'+ ' <li><a href="//wzlib.cn/">温州市图书馆</a></li>'+ ' <li><a href="/">温州话资源库</a></li>'+ ' <li><a href="/wzh">温州方言数据库检索系统</a></li>'+ ' <li class="active">检索结果</li>'+ '</ol>'; } /* 引入bootstrap */ function getParam(key) { function GetRequest() { var url = location.search; var theRequest = {}; if (url.indexOf("?") != -1) { var str = url.substr(1); var strs = str.split("&"); for(var i = 0; i < strs.length; i ++) { theRequest[strs[i].split("=")[0]]=strs[i].split("=")[1]; } } return theRequest; } return GetRequest()[key]; } var mode = (getParam('SearchTypeC') === '%E8%AF%8D%E6%B1%87') + 1; console.debug('当前请求模式:'+['单字','词汇'][mode - 1]); $('head').append('<link href="http://v3.bootcss.com/dist/css/bootstrap.min.css" rel="stylesheet">') .append('<link href="data:text/css;charset=utf-8," data-href="http://v3.bootcss.com/dist/css/bootstrap-theme.min.css" rel="stylesheet" id="bs-theme-stylesheet">') .append('<style>html, body, * { font-family: "Microsoft YaHei" ! important; }</style>'); $.getScript('//cdn.bootcss.com/bootstrap/2.3.2/js/bootstrap.min.js'); $('br,span').remove(); $('table').addClass('table').addClass('table-striped').css('width','85%').css('margin-left','auto').css('margin-right','auto'); $('body').prepend(modal); $('.style12').width('220px'); $('form').addClass('form-inline'); $('select').addClass('form-control').children('option:eq('+(mode-1)+')').attr('selected','selected'); $('input[type=text]').addClass('form-control'); $('input[type=submit]').addClass('btn').addClass('btn-primary'); /* 修正音频播放 */ function appendAudio($dest, url) { $dest.append('<audio controls height="30" width="50"><source src="'+url+'" type="audio/x-wav"><embed height="30" width="50" src="'+url+'"></audio>'); } function getToneEntry(tone) { return '.' + (10 - tone) + ';'; } function replaceEntry(org) { org = org.replace(/11|22|33|44|55/g,function(met){return {'11':'1','22':'2','33':'3','44':'4','55':'5'}[met];}); return org.replace(/1|2|3|4|5/g,function(met){return {'1':getToneEntry(1),'2':getToneEntry(2),'3':getToneEntry(3),'4':getToneEntry(4),'5':getToneEntry(5)}[met];}); } $('.style15').each(function(i, el){ if (i===0) return; $(el).html(replaceEntry($(el).text())); }); $('.style17').each(function(i, el){ if (i===0) return; var url = $(el).children('object').children('param[name=Filename]').val(); console.debug('解析声音文件:'+url); $(el).children().remove(); appendAudio($(el),url); }); }); })();
正确的在 Coursera 听课
Coursera.org 是非常适合学习的地方,然而有些课程没有中文字幕。其实看懂英文还是没有问题的,只不过课程有时候会出现一些专有名词和术语,这就很烦恼了。在学 nand2tetris 我就觉得听术语好痛苦啊,比如 muiltiplexer 多路复用器,贼恐怖。所以我就做了一个自动从英语字母中提取单词并过滤简单单词的油猴脚本!过滤的话采用的是布隆过滤器,不过可惜的是我还没找到足够好的基础词汇表(包含变形)。翻译词汇采用有道的 API,速度很不错。
代码如下:
#点我查看代码
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// ==UserScript==
// @name Word tips for Coursera
// @namespace http://kaaass.net/
// @version 0.1
// @description try to take over the world!
// @author KAAAsS
// @match https://www.coursera.org/learn/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var word_len = 3000;
window.onload = function() {
$("<style>#right-dict {width:270px;margin-top:50px;position:fixed;left:0px;bottom:10px;color: #535353;background-color: rgba(163,148,128,0.05);z-index:99;}</style>").appendTo('head');
$('<div id="right-dict"> 悬浮~</div>').appendTo('body');
var bloom, last = "";
function should_search(str) {
if (str === null || str === '' || str.length < 3) {
return false;
}
return !bloom.test(str);
}
function rep_dot(str) {
str = str.replace(/[\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g,"");
str = str.replace(/[A-Z][a-z]*/g,"");
return str.replace(/\s+/g,",").split(',');
}
function fetch_bloom(len, callback) {
$.get('https://kaaass.net/static/worddata/bloom'+len+'_256_256.json', function(data){
bloom = new BloomFilter(data, 3);
callback();
});
}
function get_req_words(str) {
var org_word = rep_dot(str), words = [], word;
for (var i in org_word) {
word = org_word[i];
if (should_search(word))
words.push(word);
}
return words;
}
function get_explain(str, callback){
$.ajax({
dataType: 'jsonp',
url: "https://fanyi.youdao.com/openapi.do?keyfrom=youdao111&key=60638690&type=data&version=1.1&doctype=jsonp&callback=?&q="+str,
async: false,
success: function(data){
if (!data) return "未找到释义!";
if (!('translation' in data)) return "未找到释义!";
callback(str, data.translation);
}
});
}
function task() {
var $active = $('.active.highlighted');
if ($active === null) return;
var str = $active.text(), words, result = "", total = 0;
if (str == last) return;
last = str;
words = get_req_words(str);
var append_str = function (word, data) {
result += "<p><strong>" + word + "</strong>: " + data + "</p>";
if (++total == words.length) {
console.debug(result);
$('#right-dict').html(result);
}
};
for (var i in words) {
get_explain(words[i], append_str);
}
}
$.getScript('https://kaaass.net/static/bloomfilter/bloomfilter.js', function() {
fetch_bloom(word_len, function(){
window.task = task;
window.setInterval("task()", 500);
});
});
};
})();
// ==UserScript==
// @name Word tips for Coursera
// @namespace http://kaaass.net/
// @version 0.1
// @description try to take over the world!
// @author KAAAsS
// @match https://www.coursera.org/learn/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
var word_len = 3000;
window.onload = function () {
$("<style>#right-dict {width:270px;margin-top:50px;position:fixed;left:0px;bottom:10px;color: #535353;background-color: rgba (163,148,128,0.05);z-index:99;}</style>").appendTo ('head');
$('<div id="right-dict"> 悬浮~</div>').appendTo ('body');
var bloom, last = "";
function should_search (str) {
if (str === null || str === '' || str.length < 3) {
return false;
}
return !bloom.test (str);
}
function rep_dot (str) {
str = str.replace (/[\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g,"");
str = str.replace (/[A-Z][a-z]*/g,"");
return str.replace (/\s+/g,",").split (',');
}
function fetch_bloom (len, callback) {
$.get ('https://kaaass.net/static/worddata/bloom'+len+'_256_256.json', function (data){
bloom = new BloomFilter (data, 3);
callback ();
});
}
function get_req_words (str) {
var org_word = rep_dot (str), words = [], word;
for (var i in org_word) {
word = org_word [i];
if (should_search (word))
words.push (word);
}
return words;
}
function get_explain (str, callback){
$.ajax ({
dataType: 'jsonp',
url: "https://fanyi.youdao.com/openapi.do?keyfrom=youdao111&key=60638690&type=data&version=1.1&doctype=jsonp&callback=?&q="+str,
async: false,
success: function (data){
if (!data) return "未找到释义!";
if (!('translation' in data)) return "未找到释义!";
callback (str, data.translation);
}
});
}
function task () {
var $active = $('.active.highlighted');
if ($active === null) return;
var str = $active.text (), words, result = "", total = 0;
if (str == last) return;
last = str;
words = get_req_words (str);
var append_str = function (word, data) {
result += "<p><strong>" + word + "</strong>:" + data + "</p>";
if (++total == words.length) {
console.debug (result);
$('#right-dict').html (result);
}
};
for (var i in words) {
get_explain (words [i], append_str);
}
}
$.getScript ('https://kaaass.net/static/bloomfilter/bloomfilter.js', function () {
fetch_bloom (word_len, function (){
window.task = task;
window.setInterval ("task ()", 500);
});
});
};
})();
// ==UserScript== // @name Word tips for Coursera // @namespace http://kaaass.net/ // @version 0.1 // @description try to take over the world! // @author KAAAsS // @match https://www.coursera.org/learn/* // @grant none // ==/UserScript== (function() { 'use strict'; var word_len = 3000; window.onload = function() { $("<style>#right-dict {width:270px;margin-top:50px;position:fixed;left:0px;bottom:10px;color: #535353;background-color: rgba(163,148,128,0.05);z-index:99;}</style>").appendTo('head'); $('<div id="right-dict">悬浮~</div>').appendTo('body'); var bloom, last = ""; function should_search(str) { if (str === null || str === '' || str.length < 3) { return false; } return !bloom.test(str); } function rep_dot(str) { str = str.replace(/[\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g,""); str = str.replace(/[A-Z][a-z]*/g,""); return str.replace(/\s+/g,",").split(','); } function fetch_bloom(len, callback) { $.get('https://kaaass.net/static/worddata/bloom'+len+'_256_256.json', function(data){ bloom = new BloomFilter(data, 3); callback(); }); } function get_req_words(str) { var org_word = rep_dot(str), words = [], word; for (var i in org_word) { word = org_word[i]; if (should_search(word)) words.push(word); } return words; } function get_explain(str, callback){ $.ajax({ dataType: 'jsonp', url: "https://fanyi.youdao.com/openapi.do?keyfrom=youdao111&key=60638690&type=data&version=1.1&doctype=jsonp&callback=?&q="+str, async: false, success: function(data){ if (!data) return "未找到释义!"; if (!('translation' in data)) return "未找到释义!"; callback(str, data.translation); } }); } function task() { var $active = $('.active.highlighted'); if ($active === null) return; var str = $active.text(), words, result = "", total = 0; if (str == last) return; last = str; words = get_req_words(str); var append_str = function (word, data) { result += "<p><strong>" + word + "</strong>: " + data + "</p>"; if (++total == words.length) { console.debug(result); $('#right-dict').html(result); } }; for (var i in words) { get_explain(words[i], append_str); } } $.getScript('https://kaaass.net/static/bloomfilter/bloomfilter.js', function() { fetch_bloom(word_len, function(){ window.task = task; window.setInterval("task()", 500); }); }); }; })();
KAAAsS
喜欢二次元的程序员,喜欢发发教程,或者偶尔开坑。(←然而并不打算填)
浙江温州浙江温州江南皮革厂倒闭了,王八蛋 KAAAsS 欠下 3.5 个亿,带着他的小姨子跑了
←_←
不过我确实好久没更新了(逃