
分类: 代码
Rule34自动爬虫脚本
Rule34-Downloader
php爬虫,用于爬Rule34图站的数据,自动下载特定标签的图片
特性:
– 支持指定标签,多标签搜索
– 支持轮候任务
– 支持微信通知运行状态
– 低占用
安装向导:
1. 安装php环境
2. 把该程序拖至php.exe同目录中
3. 编辑php内的PATHS,该常量用于定义爬下来的数据的缓存路径
4. 保存
5. 打开ready.txt,按照格式填入待下载标签
6. 保存
7. 运行start.bat
标签格式
female:0:42
标签:开始的pid数(0开始的42的倍数):结束的pid数(0开始的42的倍数,需要比开始的pid大)
下载地址
https://gitee.com/7gugu/python-rule34Lib
有问题反馈
在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流
- 邮件(gz7gugu@qq.com)
- 博客(https://www.7gugu.com)
尬吹
其实这玩意儿我去年(2018)二月就写好了,不过那时候处于要备考的节点了,就没太多的精力去管理,现在有空了就来把爬虫修好发上来
URP突破1700次安装咯!
0x00 尬吹
真的难以置信,在短短的四个月中URP的安装量又提高了1200次,这真的让人感到一种难以言表的开心。在发布两年以后,仍然具有如此活力,在我看来是很难得的。一方面是Unturned这个游戏进入到了3.0-4.0的过渡状态,导致游戏人数迅速降低,另一方面则是该面板只能用于管理Unturned服务器,这严重的限制了面向的用户群体。但是在这些情况下,URP还是能够脱颖而出,被大家选择来使用,实属荣幸。
而且这次的统计数据是2018年初时开始统计的,如果过算上17年的数据,我预估应该是已经有3000-4000的安装量了。虽然这个面板从技术上面具有许多的问题,如php和html的混淆,函数的复用率低下,耦合性高,无路由的概念,都限制住了面板的继续发展。即使这些在Umarket中已经得到了部分的解决与改善,但我坚信在以后的日子中我仍需继续努力去进行更多的开发,来继续提高自己的代码水平。
0x01 后记
再次感谢大家能够选择URP进行服务器管理维护,谢谢大家的支持,如果可以的话,欢迎大家能给我发点赞助,谢谢了owo
[油猴脚本]TypeSounder-模拟机械键盘声
描述:
一个基于油猴插件的模拟机械键盘的声音,就是按下键后,就会发出机械按键声
安装:
- 安装油猴插件,地址https://tampermonkey.net/
- 添加插件
- 运行插件
脚本代码:
// ==UserScript==
// @name TypeSounder
// @namespace https://103.249.111.182/
// @version 1.1
// @description 给按键加入机械键盘的触发声音
// @author 7gugu <gz7gugu@qq.com>
// @match https://tampermonkey.net/documentation.php?version=4.8.5847&ext=fire&updated=true
// @grant none
// @include *
// @require https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
// ==/UserScript==
(function() {
'use strict';
var id=1;
console.log("typesound已启动");
document.onkeydown=function(event){
id++;
$("body").append("<div id='key_sound_"+id+"'><audio id='player"+id+"' src='https://103.249.111.182/wp-content/uploads/2018/12/music.mp3' preload='auto'>您的浏览器不支持 audio 标签。</audio></div>");
var e = event || window.event;
var player = $("#player"+id)[0]; /*jquery对象转换成js对象*/
if(e && e.keyCode){
if (player.paused){ /*如果已经暂停*/ player.play(); /*播放*/ }
}
};
})();
GreasyFork地址:
https://greasyfork.org/zh-CN/scripts/375939-typesounder
[笔记]VS2017 char *p=“”不可用的解决办法
起因:
今天在做c语言的功课时,发现旧的教材(基于vc++6.0)使用了如下的代码,对字符串指针进行赋值.
char *p="Hello World";
但是编写到VS2017上时报了下面的一个错误.
直接导致编译失败,经过了baidu的查找后,知晓了具体原因.
解决办法:
应把源代码修改成如下的代码.
//原代码 char *p="Hello world"; //修改后的代码 const char *p="Hello world";
主要原因是因为在新版本中增强了对字符串指针的安全性,通过使用静态声明,来防止越界
[笔记][C语言]指针学习小结[20181206]
C语言学习小结:
指针的初始化
指针变量可以初始化为0,NULL或一个地址[16进制]
0和NULL等价,相当于一个空地址
//使用(变量类型 *变量名)这样一个组合就可以声明一个指定类型的指针变量 int *a;
- 指针变量就是用来存储变量地址的一种变量
- 指针的存储的地址指的是该变量的起始位置
指针运算符
- *指针运算符,用于把指针指向变量,可用于获取变量的值
- &取址运算符,用于获取变量的地址
- *(&a)和&(*a)的效果相同,都是获取变量的地址,只是处理的次序不同
例子:
#include <iostream>
int main(){
int *a,i=100;
printf("a的位置%p,i的值:%d\n",a,i);
a=&i;
printf("a的位置%p,a的值是%d\n",&a,*a);
}
运行结果:

为什么要指定指针变量的类型?
指针变量不仅仅是要存储变量的地址,同时也要记录变量的空间大小。
因为C语言传递变量时需要把数据传入已确定的内存地址及其所占的空间,
所以一个char类型的指针不可以直接指向一个int型的变量,如果强制操作将会导致越界的bug。
指针偏移:
#include <iostream>
void main() {
int *a[3];//初始化整型指针
int b[3] = { 1,2,3 };
a[0] = &b[0];//将b[0]的地址赋值给a[0]存储
a[1] = &b[1];
a[2] = &b[2];
printf("a的原来指向的值%d\n", **a);//*a仅仅是获取到b的地址,**a才是获取到b的值
printf("a的变化后指向的值%d\n", **(a+1));//a+1指的是a[1]然后再重复上一行的操作
}
指针指向多维数组
#include <iostream>
void main(){
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *b[3];
b[0]=a[0];//在多维数组中,b[0]=a[0]会自动指向a[0]的地址,不用像一维数组,使用取址符指向a[0]
b[1]=a[1];
b[2]=a[2];
printf("a[1][2]的值%d\n",*(*(b+1)+2));//现将b指向b[1],然后将b[1]指向b[1][2]
}
为啥指针指向一维数组时,需要使用取址符,但是指向多维数组时的第一维时不用取址符?
因为指针指向一维数组时,b[0]代表的是一个值,而不是一个地址,所以需要使用取址符来获取这个值得地址,
但是当指针指向二维数组时,b[0]的身份是一个地址,所以就不用使用取址符就可以直接获取到地址了。
One More Thing
数组p[i]是c语言中的一种语法糖
即使函数被设计成void fun(int array[5], int n),array依然被看成是指针。也就是说即使数组带了长度,该长度也会被编译器忽略掉。(即:a[i]=>*(a+i))
一句话:形参中的数组统统看成指针。
既然如此,还不如直接写成void fun(int *array, int n)。指针的形式,更能表达本意。
array和&array都是指针,但类型不同。array的类型是int*,而&array的类型是int(*)[2]。array是指向普通int类型的指针;&array是数组指针,该数组元素是int类型的,且数组大小是2。
[笔记][laravel]模型Model的使用v1.0
怎么新建Model:
在App文件夹内新建.php文件即可。(命名方式:首字母大写,如Member.php),如图所示:

怎么使用Model:
如以下代码:
namespace App\Http\Controllers;
use App\Member;//使用App/Member这个命名空间
class MemberController extends Controller{
public function info(){
return Member::getMember();
}
}
即可调用Member这个model,并调用model下的getMember这个函数
[笔记][laravel]视图的使用v1.0
怎样新建视图:
在resource/views下新建php文件即可。
模板文件类型:
- .php文件
- .blade.php文件
二者皆可在稍后的使用中被输出,但为了遵循项目开发的统一性,统一使用视图名字.blade.php(命名规则遵循驼峰式命名,如:ViewName)。
在该文件夹(views)下,也可以新建文件夹,并将视图文件放入其中进行归类。
怎样输出视图:
打开位于App/Http/Controller/下的控制器文件。
MemberCotroller.php
class MemberController extends Controller {
return view('info');
}
使用view()函数即可输出视图,使用函数后,view函数将会自动搜索该名字的(.php|.blade.php)文件
return view('member/info');
如果模板文件被放进了文件夹中,就给路径添加文件夹路径即可
如何给视图传入参数:
在view的第二参数中即可传入参数,第二参数是array
MemberController.php
return view('info',['name'=>'7gugu','age'=>'18']);
info.blade.php
<h1>Hello World</h1>
<p>Name:{{$name}}</p>
<p>Age:{{$age}}</p>
视图模板中使用{{$变量名}}接收来自Controller的变量
[笔记][C语言]解决VS 2017下“*”乘法符号变成指针标识符的解决方法
问题描述:
今天在Coding的时候,编写到了如下的一段代码
#include <stdio.h>
#define PI 3.14
int CircleRing(int r){
return PI*r*r;
}
然后VS的语法检测器就抽风了,硬是把PI*r这个线性运算的公式,误认成PI和指针变量r了。在通过上网查阅资料后,暂无比较官方的解决办法后,发现了可以暂时解决这个问题的写法。
解决办法:
int CircleRing(int r){
return r*r*PI;
}
即可完美解决误认的错误,继续编译操作。
小结:
目前已知该bug仅仅是会出现在VS 2017上。在Devc++上,按照原写法是可以正常编译并且运行的。目测可能是vs的语法检测器出现了玄学bug。若有dalao看见这篇文章,知道应该怎么更好的解决这个bug,欢迎留言,我也会及时更新到这篇博文中,方便大家的。
[笔记][laravel]路由使用笔记v1.0
Laravel路由简介:
路由第一个参数是访问的路径,第二个参数是一个action
比如:
输出视图
Route::any('/',function(){
return view('welcome');//输出模板welcome
});
Route::any('/',function(){
return 'Hello World';//单纯的输出文字
});
一般路由器不会直接输出视图,只会用来绑定控制器,并且进行传参操作
路由传参
比如:
web.php
Route::any('/center/{id}','CenterController@id');
(注释:把id这个参数传入CenterController这个控制器的id这个方法)
app/Http/CenterController.php
namespace App\Http\Controllers;
class CenterController extends Controller{
public function id($id){
return 'Member-ID-'.$id;
}
}
(注释:接收来自路由传入变量id)
Route::any('/center/{name?}','CenterController@id');
(注释:此处变量name后面的”?”的作用是说明该变量具有默认值,即可以在控制器中对应的方法中传参时设定一个默认参数,如果不使用该标识的话会导致访问时出现报错/404页面的出现)
路由参数过滤器
比如:
过滤单个参数
Route::any("/center/{id}",'CenterController@id')->where('id','[0-9]+');
过滤多个参数
Route::any("/center/{id}/{name}",'CenterController@id')->where(['id'=>'[0-9]+','name'=>'[A-Za-z]+']);
(注释:where把路由指向where函数即可启用过滤器,过滤器的第一个参数是要过滤的变量名,第二个参数是过滤的正则表达式,如果不遵循正则表达式的话,会先匹配其他路由规则,若无符合的规则,则会抛出404/错误)
Laravel路由类型:
- Get路由
- Post路由
- Any路由
- Match路由
下面将开始详解每一个路由的用法(个人总结的笔记)
Get路由
Route::get('/','ControllerName@MethodName');
顾名思义通过给服务器发起get请求时,可以触发该路由操作
Post路由
Route::post('/','ControllerName@MethodName');
只有当发起post请求时,才会触发该路由绑定的控制器
若直接访问该路由,将会抛出错误
Any路由(多请求路由)
Route::any('/','ControllerName@MethodName');
any路由其实就是post与get路由的结合体,可以通过使用post请求/get请求来访问该路由
Match路由(多请求路由)
Route::match(['get','post'],'/','ControllerName@MethodName');
在match路由中,该路由的第一个参数使用来配置该路由可以接受什么样的请求(详细可以接受什么样子的参数待以后再更新)
路由群组:
Route::group(['prefix'=>'member'],function(){
Route::any('user/member-center',['as'=>'center',function(){
return route('center');
}]);
Route::get('/basic1',function(){
return 'Hello world';
});//GET路由
});
路由群组的作用:
可以把路由分门别类的放置到一个群组中,使用路由前缀进行访问
如localhost/member/basic1访问的就是位于member群组下的basic1路由
路由别名:
Route::get('user/member-center',['as'=>'center',function(){
return route('center');//获取center路由的完整地址
}]);
路由别名的作用就是使用route时使用已预定好名字对应的路由
比如:route(‘center’)对应的就是localhost/user/member-center
如果此时需要修改url仅需要在路由这修改,即可做到全项目修改
目前笔记先做到这里,如果有错再更新