首页
关于
友链
留言
Search
1
安装Docker Desktop报错WSL 2 installation is incomplete
76 阅读
2
震惊!杭州应届生工作免费领2w元
31 阅读
3
我的世界紫禁之巅纯净生存服务器
25 阅读
4
python3网络爬虫开发实战pdf
23 阅读
5
火车头采集问题:Void Proc(System.Net.HttpWebRequest)
20 阅读
技术分享
日常学习
我的世界
Search
标签搜索
python
博客
javascript
ce
web
织梦
html
按键精灵
php
游戏
css
typescript
jquery
日常
数据库
vue
ubuntu
Datehoer
累计撰写
178
篇文章
累计收到
10
条评论
首页
栏目
技术分享
日常学习
我的世界
页面
关于
友链
留言
搜索到
178
篇与
Datehoer
的结果
2021-01-11
Ubuntu mysql ERROR 1698 (28000): Access denied for user 'roo
使用python爬虫的时候,其实对我们帮助最大的一个就是mysql了,可以储存爬到的内容,并且最重要的是因为,mysql免费!但是在使用的时候却遇到了问题,我是在Ubuntu上面装的mysql,当时安装的时候密码设置的应该是root并且查的时候也都说默认的密码是root,但是奇怪的事情出现了。我使用mysql -uroot -p的时候输入密码,会报错ERROR 1698 (28000): Access denied for user 'root'@'localhost'说拒绝用户访问,我觉得大概率就是密码错误了,但是奇怪的是,设置的密码应该就是root啊。然后百度查了许多的教程,大多都是要添加一句话, skip-grant-tables 然后修改文件,将密码设置为root,我试过了,不行的。于是我选择了一个笨方法,既然你说我密码错误,那么我先卸载然后重装一下不就完了,所以我把mysql先卸载了,然后又重装了一遍。。卸载命令:dpkg --list|grep mysqlsudo apt-get remove mysql-commonsudo apt-get autoremove --purge mysql-server-5.7dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P然后重新安装:sudo apt-get updatesudo apt-get install mysql-server之后再设置一下密码,我还是给它设置成了root让我吃惊的事情还是出现了,输入密码的时候还是会有这个报错,到底是为什么呢?突然我灵机一动,用sudo mysql -uroot -p怎么样?没想到就成功了,成功在Ubuntu进入mysql。所以说其实许多的问题都是出现在了权限上,我们只要使用sudo开头的指令就可以迎刃而解了。然后上传一下这次操作的全过程截图,供大家借鉴。
2021年01月11日
5 阅读
0 评论
0 点赞
2021-01-10
python报错local variable 'xxx' referenced before assignment怎么办
说到这个报错,local variable 'xxx' referenced before assignment我确实没有遇到过,那么应该怎么办呢?百度查询一下,不过其实简单看一下的话,应该是一个变量没有被定义就被使用了,那么为什么呢?报错的出现是因为之前写的那个爬漫画的代码,闲的无聊又爬了点看,没想到就出现local variable 'xxx' referenced before assignment这个报错了。首先先看一下出现的位置。def get_pictureinfo(picture_link): """ 获取图片的信息 """ num = 1 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" } while num < 4: try: picture_info = requests.get(picture_link, headers=headers, proxies=ip_pool(), timeout=5).content break except requests.exceptions.RequestException: num += 1 return picture_info def downloads(newlink): """ 下载 """ links = get_links(newlink) document_name = get_name(newlink) # # 获取单个链接 picturefotmat = judge_picture(links) # print(type(picturefotmat)) a = 1; if picturefotmat == "jpg": for link in range(len(links)): if a%50==0: time.sleep(30) onelink = links.pop() picture_info = get_pictureinfo(onelink) pictureid = re.findall(r'.*/([0-9]*).jpg', onelink) pictureid = pictureid.pop() with open(document_name + '/' + pictureid + '.jpg', 'wb') as mh: mh.write(picture_info) print("已完成" + pictureid + '.jpg') a+=1是picture_info出现的错误,但是我变量都应该定义出来了啊,这是为什么呢?后来仔细的看了一下get_pictureinfo这个函数,发现如果我num=4跳出循环的话,应该是没有picture_info这个变量的,那么下面调用的话就会报错了。明白了问题出现在哪,应该怎么解决呢?我首先想到的是既然报错,那么我们就判断一下num的值,如果它=4的话,我就给picture_info赋一个值,然后再在下面加上一个判断,如果等于我赋的值,那么跳出循环,继续爬下一个漫画。if num == 4: picture_info = "error" if picture_info == 'error': #如果请求超时则跳出循环 break但是发现如果这样的话,可能有点草率了,毕竟我们要给漫画一个机会,所以我就修改了一下上面的代码,如果try失败,除了num要+1外,还需要sleep30s,这样的话,虽然会增加时间成本,但是会减少漫画不能爬的概率。为什么要sleep30s呢?这是因为我们的网站,如果反爬的话,最简单的就是判断你跟网站的请求了,如果短时间内疯狂请求的话,不用问,肯定有问题了,所以我们请求超时之后就暂停30s再请求。然后呢,我又修改了一下如果还是不行,那么给picture_info赋值的判断。 if num == 4: time.sleep(60) #如果一直请求超时,等待1分钟后再次请求 newnum = 1 while newnum < 4: try: picture_info = requests.get(picture_link, headers=headers, proxies=ip_pool(), timeout=5).content break except requests.exceptions.RequestException: newnum += 1 time.sleep(30) if newnum == 4: picture_info = "error" # 如果给与新的机会后还是超时,那么返回error如果还是请求了3次都出现超时,那么我们再给它3次机会,不过在这之前先休息1min,然后重复一下上面的请求,如果newnum还是=4了,那么只能说抱歉了。之后再修改一下写入文件的记录 with open('downloadinfo.txt', 'a')as info: if picture_info == 'error': with open('downloadinfo.txt', 'a')as info: info.write(totalinfo+'出现错误,大概率是因为请求超时6次进行,程序已进行跳过处理') else: info.write(totalinfo)如果报错的话,那么我们记录哪些漫画下载好了不光记录信息了,还要记录是否出现错误,如果出现错误的话就进行记录,如果没有,那么就继续原来的操作了。哈哈,写文章的时候发现了一个小错误在上面。我们应该吧第三行的那个with给删掉就好了,因为前面已经有一个了,所以后面的就不需要了。with open('downloadinfo.txt', 'a')as info: if picture_info == 'error': info.write(totalinfo+'出现错误,大概率是因为请求超时6次进行,程序已进行跳过处理') else: info.write(totalinfo)这样子就对了。具体的代码会放在我的GitHub库里,可以去那里得到详细的代码--https://github.com/datehoer/yellow
2021年01月10日
3 阅读
0 评论
0 点赞
2021-01-09
html网页音乐播放器
其实一直想在网站上加一个音乐播放器的,但是当时搜索的是谷歌浏览器无法自动播放,所以就没准备加。并且其实当时也自己写了一个播放器, 网页音乐播放器 音乐播放器 html++css+js但是由于懒得写css代码,所以比较丑,然后就没有往网站上加,但是呢,有一个是我一直不明白的地方,就是当时浏览了一个网页,发现他的音乐可以直接播放,所以今天就来研究一下。其实也就是右键检查,来进行代码的查看,然后ctrl+u查看一下源代码,搜索到刚才看的位置,然后看他的这些代码有啥玄机。然后我就发现了一个库。Github:https://github.com/DIYgod/APlayer非常nice的一个库。Aplayer是一个功能强大的HTML5音乐播放器,Metingjs基于Aplayer插件封装好的插件,开箱即用。然后我们直接贴代码就好了,毕竟是人家封装好的库了,所以可以直接使用。支持的浏览器 Chrome Firefox Safari Internet Explorer 11 Microsoft Edge 选项 默认 描述 id(编号) require 歌曲ID /播放列表ID /专辑ID /搜索关键字 server(平台) require 音乐平台: netease , tencent , kugou , xiami , baidu type(类型) require song , playlist , album , search , artist auto(支持类种 类) options 音乐链接,支持: netease , tencent , xiami fixed(固定模式) false 启用固定模式,默认 false mini(迷你模式) false 启用迷你模式,默认 false autoplay(自动播放) false 音频自动播放,默认 false theme(主题颜色) #2980b9 默认 #2980b9 loop(循环) all 播放器循环播放,值:“all”,one”,“none” order(顺序) list 播放器播放顺序,值:“list”,“random” preload(加载) auto 值:“none”,“metadata”,“'auto” volume(声量) 0.7 默认音量,请注意播放器会记住用户设置,用户自己设置音量后默认音量将不起作用 mutex(限制) true 防止同时播放多个玩家,在该玩家开始播放时暂停其他玩家 lrc-type(歌词) 0 歌词显示 list-folded(列表折叠) false 指示列表是否应该首先折叠 list-max-height(最大高度) 340px 列出最大高度 storage-name(储存名称) metingjs 存储播放器设置的localStorage键 具体的代码可以去看GitHub库,里面有详细的解释。简单贴一下我们的这个底部小图标的代码吧。<meting-js server="netease" type="playlist" id="60198" fixed="true" autoplay="true" loop="all" order="random" preload="auto" list-folded="ture" list-max-height="500px" lrc-type="1"> </meting-js>非常的方便,html网页音乐播放器,开箱即用。
2021年01月09日
5 阅读
0 评论
0 点赞
2021-01-08
python 爬取漫画简易爬虫
今天闲的无聊,所以准备看看漫画,但是发现大多数的漫画一页一页翻,可能会来不及加载,但是确实是很想看接下来的内容,慢慢等的话确实有点难受。所以准备用python写一个爬虫,来爬取相关的资源,下载到本地,之后用键盘的左右键翻看就好了。大不了在爬取漫画的过程中干点别的。因为那个网站有点不可描述 ,所以我就简单说下过程,不贴图了。。。首先是分析一下这个漫画的链接,是从哪里得到的。我这个是虽然有img但是实际上他的图片储存在了data-src里,所以我们先copy一下他的xpath//*[@id="content"]/div[2]/div[4]/a/img然后将img后面添加上@data-src就能获取这个属性的内容了。之后我们需要写一个解析页面的代码,然后将解析出来的图片进行保存就好了。这里我是用的函数来写的,方便维护,毕竟python爬取漫画还是挺多代码的。def get_links(url): """ 获取所有的链接 """ headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" } pagehtml = requests.get(url, headers=headers) pagehtml_jiexi = etree.HTML(pagehtml.content.decode('gbk')) links = pagehtml_jiexi.xpath('//*[@id="image-container"]/img/@data-src') return links首先是解析一下内容,先全部阅读漫画内容,让所有的图片在同一个页面上,之后获取所有的图片链接,再进行爬取。然后就是判断图片的格式,这个是因为我爬的漫画是由png格式或者jpg格式的,所以写了个判断。。def judge_picture(url): """ 判断图片的格式 """ examplelink = url.pop() pictureformat = re.findall(r'.*([a-z]{3})', examplelink) pictureformat = pictureformat.pop() return pictureformat然后再就是进行下载了。这里用到了if,根据格式来命名。def downloads(newlink): """ 下载 """ links = get_links(newlink) document_name = get_name(newlink) # # 获取单个链接 picturefotmat = judge_picture(links) # print(type(picturefotmat)) a = 1; if picturefotmat == "jpg": for link in range(len(links)): if a%50==0: time.sleep(30) onelink = links.pop() picture_info = get_pictureinfo(onelink) pictureid = re.findall(r'.*/([0-9]*).jpg', onelink) pictureid = pictureid.pop() with open(document_name + '/' + pictureid + '.jpg', 'wb') as mh: mh.write(picture_info) print("已完成" + pictureid + '.jpg') a+=1 elif picturefotmat == 'png': for link in range(len(links)): if a%50==0: time.sleep(30) onelink = links.pop() picture_info = get_pictureinfo(onelink) pictureid = re.findall(r'.*/([0-9]*).png', onelink) pictureid = pictureid.pop() with open(document_name + '/' + pictureid + '.png', 'wb') as mh: mh.write(picture_info) print("已完成" + pictureid + '.png') a+=1 totalinfo = "文件夹:" + document_name + ",漫画链接:" + newlink+'\n' with open('downloadinfo.txt', 'a')as info: info.write(totalinfo) print("完成") 之所以加了一些print,是因为爬取的过程中太无聊了,没有提示的话会疯掉的。。。。。。然后重点说一下为什么要用到time,以及前面的try,time是因为反爬,虽然我爬的网站大概率没有,但是每隔多少图片休息一下还是好的。之后那个try是为了防止超时,如果有自己写过的话,会发现有的时候爬着爬着,就不动了。这就是超时了,所以加上一个try进行抓取,如果超时就进行重新获取,然后如果3次都不行的话,就继续下一个。当然实际上到底是不是这么写,我也不清楚。。因为我确实没遇到超时的报错,因为我之前没加timeout,所以他会一直卡在一个地方不动,然后我直接加了timeout和try了。具体的代码可以看我的GitHub库----GitHub库:https://github.com/datehoer/yellow如果有什么不懂的可以在评论区留言,我会在看到的第一时间进行回复的。
2021年01月08日
3 阅读
0 评论
0 点赞
2021-01-07
python pop from empty list
我们在使用写爬虫的时候,大多数都是使用的requests库,然后呢,通过它获取到的链接等等,大多数都属储存在一个数组中的。["https://zjzdmc.top","https://zjzdmc.top/jsfx/114.html","https://zjzdmc.top/jsfx/108.html","https://zjzdmc.top/jsfx/104.html"]然后我们通过遍历数组的方式读取每个链接。这里我一般是使用pop()这个函数,但是经常会出现一个报错pop from empty list但是我们都知道,一般写的话,都是边写边run的,所以可以确定之前储存链接的数组应该是有的啊,为什么会报错呢?其实大多数情况还是因为这个数组的问题: 可能是我们设置的循环次数不对,多了,然后最后一个已经通过pop()删除了,再接下来就是空数组了,所以继续的话会报错。 再就是可能是因为我们的条件设置错了,一般链接都不是一个单独出现的链接,都会跟着各类标签,然后我们需要获取的时候使用xpath或者其他的方式定位错了。 还有可能是因为我们设置的条件错了,可能有人问了,这不跟上一条一样么,其实是设置的正则条件错了,一个符合的都没有,比如说我今天爬一个漫画网站,然后给爬下来的图片命名的时候我用的是正则来获取,然后不相信设置错了条件,所以符合的一个没有。 大多数情况还就是因为数组空了,所以才会出现pop from empty list这个错误,那么我们应该怎么检查呢?当然是通过print啦,我们先把pop()后面的内容注释掉,之后加上在调用pop()的前面加上一个print来进行数组的数组,那么就可以明确的到数组的数量了,也能很快就明白到底是哪里出错了。简单举一个例子:name = re.findall(r'xxxxx/.*?/(.*?).jpg', new_link)我们要获取这个图片的id然后进行命名,通过正则很容易得到效果,但是前面的内容是漫画的序号,我们需要使用.*?来进行匹配。我之前出现pop from empty list这个错误是因为我没设置好id,然后直接匹配的话,匹配的是上一个漫画的id,所以不会有内容出现,再继续执行下面的内容的话,就会报错啦。所以出现问题一定不要惊慌,可以看一下是哪个位置出现错误,然后再在之前添加一个print输出一下效果,就能得到很好的答案了。如果有什么疑问,可以在评论区留言,我会在看到的第一时间进行回复的。
2021年01月07日
5 阅读
0 评论
0 点赞
2021-01-06
typescript原始数据类型和Any类型
在做一些大型项目的时候,都会利用到typescript,而我呢也有一些小的项目想要做,本来是只准备用html+css+js写的,但是听说typescript维护很方便,而且日后工作的时候还是要用到,所以准备学习一下。今天简单了解一下typescript中的原始数据类型以及any类型。我们知道typescript中的文件是需要编译才能使用的,比如说我们创建一个test.ts的文件,需要在powershell面板中使用tsc test.ts进行编译成js文件才能使用的。好了,话不多说,直接切入我们今天的正题,原始数据类型以及any类型。JavaScript中大概有6中数据类型,而原始数据类型则有5中。但是如果你真的了解过了的话,会发现其实是8中数据类型,其中有7中原始数据类型,但是其中打叉的类型是es6新增的类型,我们暂时讨论。然后我们简单的定义一下这些原始数据类型let isbool : boolean = false let isnumber : number = 123 let isstring : string = "datehoer" let isnull : null = null let isundefined : undefined = undefined这里就是简单的定义5中原始数据类型了,我们发现,是不能修改变量的值的,如果编译器支持typescript的话,会看到我们如果修改的话,会有报错提示的。而我们如果将isbool改为true则是可以的。然后再介绍一下any类型,因为我们是不可能知道一些数据在应用的时候到底是什么类型的,所以any类型就出现了。我们可以看到,any类型是可以修改成任何数据类型的。那么有的人会说了,既然这么方便,那我们直接给所有的值都改成any类型不行么?实际上是不行的。我们要根据实际的开发环境,如果已经确认变量的数据类型的话,一定要给他设置对应的类型,而不是使用any,容易发生报错。好了,今天的typescript原始数据类型就介绍到这里,如果有什么疑问可以在评论区留言,我会在看到的第一时间进行回复的。
2021年01月06日
4 阅读
0 评论
0 点赞
2021-01-06
乔布斯传中文版pdf下载
许多人,不论国籍,都会被世人所记住。比如说马云,马化腾,再比如说乔布斯等等,不分国界。这是因为他们在所在的行业做到了顶尖的效果,并且与公众接触。今天简单分享一下乔布斯传的pdf版。乔布斯传pdf版下载地址 s6sz 《史蒂夫·乔布斯传》是 史蒂夫·乔布斯 唯一授权的官方传记,在2011年上半年由美国出版商 西蒙舒斯特 对外发布出版消息,备受全球媒体和业界瞩目。2011年10月24日,《史蒂夫·乔布斯传》在全球发售,简体中文版也同步上市。简单介绍一下乔布斯,虽然大多数人其实都知道他是创造苹果手机的人。全名: 史蒂夫·保罗·乔布斯(Steve Paul Jobs)生日: 1955年2月24日籍贯: 美国 加利福尼亚州 硅谷教育: 1972年高中毕业后入读 俄勒冈州波特 兰 里德学院,六个月后退学。父母: 婴儿时期被保罗·乔布斯和克拉拉·乔布斯领养,两人均已过世。家庭: 与妻子劳伦·鲍威尔1991年结婚。乔布斯23岁时育有一女,名为莉萨·乔布斯,但并未与其生母结婚,此后与劳伦育有三名子女。
2021年01月06日
2 阅读
0 评论
0 点赞
2021-01-05
浏览器的区别
现在在市面上的浏览器非常的多,不论是国内的,还是国外的,都可以使用,因为这个其实不分国界的。那么这些浏览器到底有什么区别呢?让我们来看看现在市面上流行的浏览器都有哪些区别。首先目前来说,我电脑里其实有许多的浏览器可以使用,比如说我最常用的Google chorme谷歌浏览器,也有一般默认打开的Microsoft edge浏览器,亦或者许多旧的软件的弹窗都会使用的ie浏览器,或者火狐浏览器。其实说到底,使用浏览器还是看个人的喜好和习惯了,毕竟不同的浏览器的一些功能是不一样的,这主要是因为他们使用的浏览器内核是不同的。让我们简单来看一张图简单区分一下他们的区别。其中ie浏览器应该是一个大的boss,是其他浏览器翻不过的高山,因为大多数的人都是用的是微软的系统,而微软内置的浏览器就是ie了,但是由于优化的问题,导致ie使用的非常的缓慢,然后经常处于未响应状态,因此才有其他浏览器的份额,要不内置的总比自己下载的要好一些,就像是下载软件要去软件的官网下载一样。而目前来说,差不多应该是谷歌浏览器和safari的用户最多吧,谷歌浏览器是因为它确实很好用,比如说我现在就在使用,而safari是因为他是mac内置的浏览器,同样非常的方便。之后像其他的浏览器会因为种种的毛病而使得用户减少。当然,看到这里你一定会说了,那么像国内那没多浏览器呢?他们如何呢?很抱歉,国内的浏览器基本上都是根据ie,chorme,opera,firefox等国外的浏览器的内核编写的外壳,也就是表面上看是国内的,实际上就是套了一个壳而已。当然,我目前其实看浏览器还是看他们的作用啦,以谷歌浏览器为主,一大堆的拓展插件使得谷歌浏览器的实用性非常的好,因为其实毕竟开发者开发浏览器就已经很累了,然后还要想更多的功能,还不如让用户根据自己的需求来进行创作,其实这个有点像是那个steam上的创意工坊。基本上比较好用的支持浏览器插件比较多的有chorm和firefox,谷歌浏览器和火狐浏览器。然后再就是360浏览器,这个我看许多的大佬也在用,并且插件也是蛮多的。另外,不同的浏览器他们的内存占额以及运行速度是不同的,这里以谷歌浏览器为首,不过绝大多数的国外的浏览器都是非常快速的,不论是打开速度还是网页的浏览等等吧,都比国内的要好上许多,当然也并非绝对,比如说ie,虽然ie是公认速度最慢的浏览器,但是也不妨碍它有一个上进的心,毕竟它敢在你每一次使用的时候弹出选项框问你是否使它成为默认浏览器。如果遇到什么困难一定要想一想ie浏览器,它都那么差了,还有勇气问你是否将它设为默认浏览器,你有什么理由没有勇气呢?如果有什么疑问,可以在评论区留言,我会在看到的第一时间进行回复的。
2021年01月05日
2 阅读
0 评论
0 点赞
2021-01-04
JavaScript 三目运算符,三元运算,冒号 问号
JavaScript中有许许多多的运算符,其中大部分都是一眼就能明白是什么意思的,但是有一种如果不仔细想想的话,估计是很难理解的。那就是JavaScript中的三目运算符,也叫做三元运算。其实这个如果只说名字的话,大家可能不太明白是啥意思,我们来说的通俗一些,冒号问号,三元运算就是通过冒号问号来构成的。简单来看一下三元运算的表达方式:表达式1?表达式2:表达式3是不是有点懵逼,我当时一开始以为是判断表达式1和表达式2的关系,实则不是。是判断表达式1的真假,然后如果为true则执行表达式2如果为false则执行表达式3。举个简单的例子,我们都知道字母的布尔值都是true,所以我们可以直接进行测试,通过console面板。"s"?1:2如果s为true的话,就输出1如果为false的话就输出2,通过前面我们知道,true执行1false执行2.所以输出的结果就是1。其实还是那句话,JavaScript一些简单的代码直接通过浏览器自带的console面板进行测试就可以了。并且记得字母之类的要是字符串的形式,而非自己一个单独的在这里进行判断哦。其实说了这么多,三元运算和我们的if else运算是基本相同的。但是也是有一些不同的地方,if else语句是没有返回值的,而三元运算是有返回值的。我们有一些语句是需要有返回值才能使用的,比如说console.log(),他需要我们在括号内有返回值才能使用,而我们可以在里面使用三元运算,而不能使用if else。好了,说这么些,实际上三元运算在日常中使用的还是挺多的,不过大部分的语句要我写的话我还是会选择使用if else。我们只要记住三元运算是与if else类似即可。如果有什么疑问,可以在评论区留言,我会在看到的第一时间进行回复的。
2021年01月04日
5 阅读
0 评论
0 点赞
2021-01-03
我的世界 怎么圈地
还是回归一下中心吧,简单说一下我的世界服务器该怎么圈地。首先我们需要服务器装了领地这个插件,之后给予相应的权限后,我们通过木锄来进行圈地。假如说我是一个小白玩家,然后辛辛苦苦的建了一个火柴盒,想要把家安在这里,为了没有熊孩子破坏,所以我准备圈一下地,这样这片地就归我了。那么我改怎么圈地呢?首先需要一个木锄,之后我们在分别使用左击和右击选择区域。首先用木锄先左击敲一下左下角的方块,之后再右键 敲一下对角线的上面的方块。之后就会有一个可视化的区域出现,这个区域就是我们所圈下的领地了。然后我们通过指令来购买这块地就行了。具体指令为: /res create 领地名 然后就可以购买这块地了。当然,需要花费一定的游戏币才能购买,并且土地的价格是不一样的,根据服务器的不同而价格不同。不过我们服务器是0.01游戏币一块地,非常的便宜。我们圈好地以后,就可以通过/res tp 领地名来进行传送以及/res set来进行领地权限的设置了。服务器QQ群:173165583 期待各位的加入。
2021年01月03日
7 阅读
0 评论
0 点赞
2021-01-02
我的世界EssentialsX GeoIP设置
我的世界EssentialsX GeoIP设置,其实这个插件应该没什么卵用的,就是一个获取ip然后根据ip获取城市位置的一个插件。应该是为了搭配那个EssentialsX插件的拓展插件。官方说明: EssentialsX GeoIP integrates geographical IP lookup features into EssentialsX, allowing you to determine approximately where your players come from.其实简单来说就是通过这个插件,就可以将获取玩家位置的功能添加到EssentialsX内了。不过如果我们使用这个插件的话,是会报错的,因为从2019年12月开始,获取maxmind提供的数据需要注册账号才能获取,通过该网站注册一个账号,然后进行密钥的获取,之后添加到EssentialsX GeoIP的配置文件中使用。简单介绍一下如何使用这个插件吧,我的世界毕竟是一个非常流行的游戏,所以里面的服务器是重中之重。首先我们需要一个插件,下载地址: 点击之后下载需要的就行了,当然我给的下载地址是我现在用的,以后的可能教程不一样了就,谁知道呢。之后我们先在服务器加载一遍之后,前往这个 网址 进行maxmind账号的注册。具体注册可以看图,其实就是随便填就好了,之后会有一封验证邮件发送过来,我们点击邮件就可以设置密码登录了。然后等我账户,之后看左侧的导航栏,中间有一个My License Key,点进去。然后点击创建密钥即可。我们只需要复制里面的License key就好。当然在创建的时候会有一个问题,我们直接选no就好,要不然要填好多内容。然后将他复制到我们的插件的配置文件中,即可使用。这样子就可以使用了,唯一的不好的地方就是,每30天就要去更新一次密钥,否则就无法使用了。EssentialsX GeoIP provides the permission essentials.geoip.show . With this permission, staff will be able to: See a player's approximate location when they log in See a player's approximate location when you run /whois <player> Giving a player the permission essentials.geoip.hide will prevent their location showing up in either of these situations.我们通过这个插件就可以获取玩家的大概位置,然后进行精准推送游戏信息了,当然,只是提供一个大概的位置而非准确位置!如果有什么疑问可以再评论区留言,我会在看到的第一时间进行回复的。
2021年01月02日
3 阅读
0 评论
0 点赞
2021-01-01
vue中的attribute和property分别是什么呢?
2021年的第一天,准备开始着手学习vue了,主要其实还是为了拓展一下自己的知识面,再加上现在前端找工作,大多数都是要会Vue或者React的,所以准备趁着假期时间充足,学习一下vue框架。其实简单来说,vue的官方教程已经很明确了,但是毕竟人家是开发语言的,就算再怎么细致,也会有想不到的,就想我们想不到居然有人不会写for循环一样。vue的官方文档vue的官方文档写的非常详细了,但是还是有好多不懂的,比如说vue中的attribute和property,其实我也才看到实例部分,这个是边查边写的,主要是记录一下自己的学习状态。简单来说,attribute和property分别是有关html中的内容,attribute是元素标签的属性,而property则是元素对象的属性。而实际上之所以会引出attribute和property,是因为vue可以直接修改html网页中的变量,比如说最简单的那个例子。<div id="s1_on"> <p>{{message}}</p> <input type="button" value="反转" v-on:click="rever"> </div> var s1_on = new Vue({ el:"#s1_on", data:{ message: "abcdefg" }, methods: { rever:function(){ this.message = this.message.split("").reverse().join("") } }, })通过点击按钮使得本来已经设置的变量进行反转,这就是修改本来的值,当然其实说实在的,还是有更简单的,比如说我们直接在控制台输入创建的vue的名字,后面跟上要修改的属性值,就能进行修改了。比如说我要修改messsage,那么我可以直接使用s1_on.message="asdasdad"来进行修改。而我们在vue中对数据进行处理的时候,大多情况下都是默认的对attribute进行处理,而如果要对property进行处理的话,需要在后面加上.prop。 变量作为 attribute 和 property 的 value 的绑定关系会在用户发生交互更新值后失效 Vue.js 一般使用 :value 即可让 value 作为 property Vue.js 动态模版需要使用 :value.prop 才可让 value 作为 property 好了,今天的介绍就到这里了,如果想要知道更多的vue的内容,推荐直接去vue的官方文档进行查看,当然,如果有什么不会的也可以在评论区留言,我会在看到的第一时间进行回复的。
2021年01月01日
2 阅读
0 评论
0 点赞
1
...
5
6
7
...
15