使用docker搭建Calibre-web

使用docker安装,拉取的镜像是 lscr.io/linuxserver/calibre-web

官网有cli和compose的启动方式,我使用了compose

保存为calibre-web-compose.yml ,然后执行 docker-compose -f calibre-web-compose.yml up -d

阅读剩余部分 -

正则表达式的match、search、findall、finditer

@2022/7/13 重新梳理正则模块各个方法的使用

太长不看版:
例如,判断一个字符串是否符合手机号或邮箱的正则,使用match或search都行。只会匹配一次,匹配成功就返回结果,匹配不到就失败。

pattern = re.compile('1[0-9]{10}')
result = pattern.match('13712341234')
print(result)
print(result.group())

例如,需要从一段html里获取所有的图片url,使用findall或finditer;如果仅需要获取图片url中的文件名,配合分组食用最佳。如果使用了分组,只能使用finditer

pattern = re.compile('http://[a-z0-9\./]*\.com/img/([0-9a-z]*)\.[a-z]{3,4}')
result = pattern.finditer('<div><img href="http://xx.com/img/a.jpg"></img><img href="http://xx2.com/img/b.gif"></img></div>')
if result:
    for m in result:
        print(m.group(1))
        print(m.group())


阅读剩余部分 -

如何提问

问题描述要细致

有些人提问过于简洁了。只有一句类似“我写的这个计算器怎么不能运行呢?”的话。没有写自己的思考,没有代码片段,或其他相关细节。要知道,细节才 是解决问题的关键。当然,也不能过了,整个帖子密密麻麻全是代码,要别人帮你找错误一般是不可能的。一定要清楚地描述自己的问题。给大家举个例子:

愚蠢的问题:jmeter报错怎么处理?

明智的问题:jmeter的http请求报错http 404,改怎么处理。

第二种提法是明智的,这样才可能有人回复你“建议这样或那样完成任务”。

包含错误信息

“请求大家帮助”“我的程序不能运行!”……这样的您就别发了,没人会理你的。人们需要准确地知道它是怎么不能运行,你知道自己是怎么弄的,应该怎么样,可是别人只是路过,并不知道怎么回事儿。

简要列出你的开发环境

环境变量是常常被忽视的要素。花几秒钟列出一些像使用的软件版本号、开发平台等相关细节。

写出你的猜测

提问的时候讲述你自己对这个问题的看法是很有用的。有时,你所处的环境在别人眼里是不可思议的,人们根本不知道你要干什么。提问里包括你的思维过程简介可以让大家找准你的失误,并解释原因。

要有示例

也许根本不需要例子,但有时这是准确地描述你的问题/情况的唯一方法。先写出出错的代码片断,然后描述你的问题。如果是网页编程方面的问题,给一个示范网页,让大家查看一下会很有帮助。对于CSS一类的问题,只有这样才能清楚明白的表达。

学会描述一个问题,不仅能很快找到答案,还能知道以后如何研究类似的问题。

大部分问题只要你把关键字输入百度搜索框,然后点击“搜索”就能找到答案。贴出你的为难题之前要先自我探索和研究一下。自己亲手找到答案,可以学到更多东西。就算你没有找到最终的解决方案,但是在探索的过程中,你已经学到了很多很多。

不要被别人的回复激怒

大多数时候,大家在自己的业余时间(或工作间歇)给你回复,如果您提出问题,有人回复“你有没有好好检查一下自己的代码/设置呀?”你可能会倾向于回应, “我当然检查过了,要不然我会发帖提问嘛,你以为我傻呀?”也许我的描述有点儿过分,但信不信由你,更糟的情况也有的是,遇到这样的回复你要礼貌,除非他 恶意攻击你。

记住:帮你是情分,不帮你是本分!

参考:
https://www.techug.com/how-coder-to-ask-question
https://blog.wpjam.com/m/how-coder-to-ask-question

圣歌

炽天之翼为光辉
光辉为揭露罪恶的纯白
纯白为净化的证明
证明为行动的结果
结果为未来
未来为时间
时间为规律







阅读剩余部分 -

学习笔记2——使用Locust创建http请求

本文写作时,使用当时最新版本的0.14.5,现在已更新到2.x,可能有误,请谨慎参考。


学习笔记1中主要是介绍了Locust的线程(虚拟用户)数的创建和执行策略,这里主要介绍用locust发起http请求

1.基本http请求

为了做各种场景测试,需要本地启动服务端模拟程序,先发一个无参的get请求和post请求(本地测试服务可以参照github搭建: https://github.com/wang153723482/http_world/tree/master/hello-springboot

这里不再继承Locust这个类,而是继承了HttpLocust,这样在TaskSet的子类中,可以直接使用self.client这个属性

from locust import HttpLocust, TaskSet, task
from locust.wait_time import constant

阅读剩余部分 -