首页
直播
壁纸
免责声明
更多
统计
关于
Search
1
一款自动化渗透工具包 TscanPlus
225 阅读
2
获取一张美国虚拟信用卡
223 阅读
3
JS Document.evaluate()的使用
199 阅读
4
Git冲突:Please commit your changes or stash them before you merge
176 阅读
5
Python 31条 pip 命令全解析
164 阅读
默认分类
操作系统
Linux
管理面板
实用工具
开发语言
PHP
Web
python
typecho
ThinkPHP
layui
爬虫
文章分享
登录
Search
标签搜索
python
php
web
linux
Git
js
requests
自动化
宝塔
thinkphp
Centos
adb
html
typecho
layui
jquery
ubuntu
multipass
虚拟机
thikphp
YiYun
累计撰写
54
篇文章
累计收到
21
条评论
首页
栏目
默认分类
操作系统
Linux
管理面板
实用工具
开发语言
PHP
Web
python
typecho
ThinkPHP
layui
爬虫
文章分享
页面
直播
壁纸
免责声明
统计
关于
搜索到
26
篇与
的结果
2024-04-18
Python 31条 pip 命令全解析
首先,pip 是个啥?简单来说,pip 就是 Python 的包管理器,就像手机里的应用商店一样,可以方便地帮你安装、升级或卸载 Python 的各种第三方库。命令 1:安装 pip如果你是Python新手,很可能系统已经自带pip。验证是否已安装,只需在命令行输入:python -m pip --version若未安装,可参考官方指引进行安装。命令 2:安装 Python 库想装个requests库试试水?一句命令搞定!pip install requests这就是pip最基础也是最常见的用法,它会自动处理库及其依赖关系。命令 3:升级库世界日新月异,库也要保持最新状态。要升级已安装的所有库:pip list --outdated # 查看待升级库 pip upgrade <package_name> # 升级指定库命令 4:卸载库不再需要某个库时,我们可以这样卸载:pip uninstall <package_name>命令 5:搜索库在决定安装某个库之前,你可能想先了解下有哪些可用的库能满足你的需求。这时可以使用 search 命令:pip search <keyword>比如查找与机器学习相关的库,你可以输入 pip search machine learning 。命令 6:查看已安装库详细信息想知道已安装的库具体版本和其他详情? show 命令可以帮助你:pip show <package_name>命令 7:只下载库而不安装有时你可能需要离线环境安装包或者备份当前环境的依赖,那么可以使用 download 命令只下载不安装:pip download <package_name>命令 8:创建requirements文件在项目开发中,为了方便团队成员统一环境,我们可以创建一个包含所有依赖的 requirements 文件:pip freeze > requirements.txt这会列出当前环境中所有已安装库及其版本,并保存到 requirements.txt 文件中。而要根据这个文件安装所有依赖,只需:pip install -r requirements.txt命令 9:指定库版本安装在某些情况下,你可能需要安装特定版本的库,比如安装 requests 库的2.25.1版本:pip install requests==2.25.1命令 10:检查是否存在安全漏洞pip 配合 Safety 工具可以检查已安装库的安全性:pip install safety safety check --full-report这会扫描所有已安装的库,并报告是否有已知的安全漏洞。命令 11:创建虚拟环境并激活为了避免不同项目间依赖冲突,我们通常会在每个项目下创建独立的虚拟环境,然后使用 pip 进行管理:python -m venv my_project_env # 创建虚拟环境 source my_project_env/bin/activate # Linux/Mac激活环境 my_project_env\Scripts\activate.bat # Windows激活环境在虚拟环境中,你可以放心使用 pip 安装和管理项目的专属依赖。命令 12:清理未使用的库或缓存随着项目迭代,有些不再使用的库可能会被遗忘,这时可以使用 autoremove 命令来清除:pip-autoremove <package_name>同时,你也可以清理 pip 下载缓存以释放磁盘空间:pip cache purge命令 13:查看 pip 自身的版本信息及更新 pip要查看 pip 本身的版本,只需运行:pip --version为了确保 pip 始终保持最新,可使用如下命令升级 pip 自身:python -m pip install --upgrade pip当然,pip 的功能确实丰富多样,让我们继续探索:命令 14:指定源安装库在某些网络环境下,可能需要从国内镜像或者其他自定义源下载和安装库。例如使用阿里云的Python 镜像源:pip install -i https://mirrors.aliyun.com/pypi/simple/ <package_name>或永久更改 pip 默认源(推荐在配置文件中修改):pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/命令 15:分发本地构建的库如果你自己开发了一个 Python 包,并希望在本地测试安装,可以先打包成 whl 或 tar.gz 格式,然后通过 pip 进行安装:# 假设你已经将项目打包为my_package-0.1.0.whl pip install ./my_package-0.1.0.whl命令 16:查看库安装路径如果想知道某个库具体安装在系统哪个位置,可以使用 show --files 选项:pip show --files <package_name>命令 17:在安装时跳过测试有些库在安装过程中会执行单元测试,若想快速安装可选择跳过这些测试:pip install --no-deps --ignore-installed --no-cache-dir --disable-pip-version-check --no-compile <package_name>命令 18:列出所有全局安装的库获取全局环境下的所有已安装Python库列表:pip list命令 19:在安装时指定额外选项某些库可能在安装时需要额外参数,比如 numpy 、 scipy 等科学计算库,你可以直接在 pip 命令中传递这些选项:pip install numpy --install-option="--openblas"这里的 --openblas 是一个示例,实际选项请根据库文档进行设置。命令 20:查看依赖树要了解一个包及其所有依赖关系,可以使用 deptree 第三方工具:pip installdeptree deptree -l <package_name>这将展示指定包及其所有依赖项之间的层级关系。命令 21:修复损坏的库如果某个库在安装或升级过程中出现问题导致无法正常使用,可以尝试修复它:pip install --force-reinstall <package_name>命令 22:获取库的源码如果你对某个库的实现细节感兴趣,可以通过 pip 下载其源代码:pip download <package_name> --no-binary :all:然后在下载目录中找到对应的 tar.gz 或 whl 文件解压查看。命令 23:执行pip的自定义脚本有些开发者可能会编写自定义的 pip 脚本来自动化一些任务,你可以通过 run 命令执行:pip run my_script.py命令 24:在安装时指定 Python 版本如果你有多个Python版本并希望为特定版本安装库:python3.7 -m pip install <package_name>这里 python3.7 替换成你想要使用的Python解释器路径。命令 25:检查依赖冲突在项目中可能存在不兼容的依赖版本,可以使用 pipdeptree 第三方工具来检测:pip install pipdeptree pipdeptree --packages <package_name>这将展示指定包及其依赖项之间是否存在版本冲突。命令 26:创建独立可执行文件借助 pyinstaller 等工具,你可以通过pip将Python程序打包成一个独立可执行文件:pip install pyinstaller pyinstaller your_script.py命令 27:管理用户级别的包默认情况下,pip 会安装全局系统级别的包。若想为当前用户安装不影响系统的包,可以加上 --user 选项:pip install --user <package_name>命令 28:只升级指定的包而不升级所有包当只需要更新某个特定的库时,可以使用 --upgrade 选项:pip install --upgrade <package_name>命令 29:批量卸载多个包如果需要一次性卸载多个Python包,可以通过列表形式提供包名:pip uninstall <package1> <package2> ...命令 30:冻结当前环境下的所有包及其版本为了能够复制或记录当前环境中所有已安装包的状态,可以生成一个 requirements 文件:pip freeze > requirements.txt这将把所有已安装包及其版本号写入 requirements.txt 文件中,便于在其他环境下复现相同的软件环境。命令 31:根据requirements文件创建虚拟环境并安装包结合虚拟环境(如venv或conda),可以从requirements文件重新构建环境:python -m venv my_venv source my_venv/bin/activate # Windows: my_venv\Scripts\activate.bat pip install -r requirements.txt
2024年04月18日
164 阅读
3 评论
0 点赞
2024-04-18
14个Python自动化实战脚本
1、批量文件重命名神器在工作中,我们常常需要对大量文件进行批量重命名,Python帮你轻松搞定! import os def batch_rename(path, prefix='', suffix=''): for i, filename in enumerate(os.listdir(path)): new_name = f"{prefix}{i:03d}{suffix}{os.path.splitext(filename)[1]}" old_file = os.path.join(path, filename) new_file = os.path.join(path, new_name) os.rename(old_file, new_file) # 使用示例: batch_rename('/path/to/your/directory', 'file_', '.txt')2、自动发送邮件通知告别手动发送,用Python编写定时发送邮件的自动化脚本。import smtplib from email.mime.text import MIMEText def send_email(to_addr, subject, content): smtp_server = 'smtp.example.com' username = 'your-email@example.com' password = 'your-password' msg = MIMEText(content) msg['Subject'] = subject msg['From'] = username msg['To'] = to_addr server = smtplib.SMTP(smtp_server, 587) server.starttls() server.login(username, password) server.sendmail(username, to_addr, msg.as_string()) server.quit() # 使用示例: send_email('receiver@example.com', '每日报告提醒', '今日报告已生成,请查收。')3、定时任务自动化执行使用Python调度库,实现定时执行任务的自动化脚本。import schedule import time def job_to_schedule(): print("当前时间:", time.ctime(), "任务正在执行...") # 定义每天9点执行任务 schedule.every().day.at("09:00").do(job_to_schedule) while True: schedule.run_pending() time.sleep(1) # 使用示例: # 运行此脚本后,每天上午9点会自动打印当前时间及提示信息4、数据库操作自动化简化数据库管理,Python帮你自动化执行CRUD操作。import sqlite3 def create_connection(db_file): conn = None try: conn = sqlite3.connect(db_file) print(f"成功连接到SQLite数据库:{db_file}") except Error as e: print(e) return conn def insert_data(conn, table_name, data_dict): keys = ', '.join(data_dict.keys()) values = ', '.join(f"'{v}'" for v in data_dict.values()) sql = f"INSERT INTO {table_name} ({keys}) VALUES ({values});" try: cursor = conn.cursor() cursor.execute(sql) conn.commit() print("数据插入成功!") except sqlite3.Error as e: print(e) # 使用示例: conn = create_connection('my_database.db') data = {'name': 'John Doe', 'age': 30} insert_data(conn, 'users', data) # 在适当时候关闭数据库连接 conn.close()5、网页内容自动化抓取利用BeautifulSoup和requests库,编写Python爬虫获取所需网页信息。import requests from bs4 import BeautifulSoup def fetch_web_content(url): response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.text, 'html.parser') # 示例提取页面标题 title = soup.find('title').text return title else: return "无法获取网页内容" # 使用示例: url = 'https://example.com' web_title = fetch_web_content(url) print("网页标题:", web_title)6、数据清洗自动化使用Pandas库,实现复杂数据处理和清洗的自动化。import pandas as pd def clean_data(file_path): df = pd.read_csv(file_path) # 示例:处理缺失值 df.fillna('N/A', inplace=True) # 示例:去除重复行 df.drop_duplicates(inplace=True) # 示例:转换列类型 df['date_column'] = pd.to_datetime(df['date_column']) return df # 使用示例: cleaned_df = clean_data('data.csv') print("数据清洗完成,已准备就绪!")7、图片批量压缩用Python快速压缩大量图片以节省存储空间。from PIL import Image import os def compress_images(dir_path, quality=90): for filename in os.listdir(dir_path): if filename.endswith(".jpg") or filename.endswith(".png"): img = Image.open(os.path.join(dir_path, filename)) img.save(os.path.join(dir_path, f'compressed_{filename}'), optimize=True, quality=quality) # 使用示例: compress_images('/path/to/images', quality=80)8、文件内容查找替换Python脚本帮助你一键在多个文件中搜索并替换指定内容。import fileinput def search_replace_in_files(dir_path, search_text, replace_text): for line in fileinput.input([f"{dir_path}/*"], inplace=True): print(line.replace(search_text, replace_text), end='') # 使用示例: search_replace_in_files('/path/to/files', 'old_text', 'new_text')9、日志文件分析自动化通过Python解析日志文件,提取关键信息进行统计分析。def analyze_log(log_file): with open(log_file, 'r') as f: lines = f.readlines() error_count = 0 for line in lines: if "ERROR" in line: error_count += 1 print(f"日志文件中包含 {error_count} 条错误记录。") # 使用示例: analyze_log('application.log')10、数据可视化自动化利用Matplotlib库,实现数据的自动图表生成。import matplotlib.pyplot as plt import pandas as pd def visualize_data(data_file): df = pd.read_csv(data_file) # 示例:绘制柱状图 df.plot(kind='bar', x='category', y='value') plt.title('数据分布') plt.xlabel('类别') plt.ylabel('值') plt.show() # 使用示例: visualize_data('data.csv')11、邮件附件批量下载通过Python解析邮件,自动化下载所有附件。import imaplib import email from email.header import decode_header import os def download_attachments(email_addr, password, imap_server, folder='INBOX'): mail = imaplib.IMAP4_SSL(imap_server) mail.login(email_addr, password) mail.select(folder) result, data = mail.uid('search', None, "ALL") uids = data[0].split() for uid in uids: _, msg_data = mail.uid('fetch', uid, '(RFC822)') raw_email = msg_data[0][1].decode("utf-8") email_message = email.message_from_string(raw_email) for part in email_message.walk(): if part.get_content_maintype() == 'multipart': continue if part.get('Content-Disposition') is None: continue filename = part.get_filename() if bool(filename): file_data = part.get_payload(decode=True) with open(os.path.join('/path/to/download', filename), 'wb') as f: f.write(file_data) mail.close() mail.logout() # 使用示例: download_attachments('your-email@example.com', 'your-password', 'imap.example.com')12、定时发送报告自动化根据数据库或文件内容,自动生成并定时发送日报/周报。import pandas as pd import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart def generate_report(source, to_addr, subject): # 假设这里是从数据库或文件中获取数据并生成报告内容 report_content = pd.DataFrame({"Data": [1, 2, 3], "Info": ["A", "B", "C"]}).to_html() msg = MIMEMultipart() msg['From'] = 'your-email@example.com' msg['To'] = to_addr msg['Subject'] = subject msg.attach(MIMEText(report_content, 'html')) server = smtplib.SMTP('smtp.example.com', 587) server.starttls() server.login('your-email@example.com', 'your-password') text = msg.as_string() server.sendmail('your-email@example.com', to_addr, text) server.quit() # 使用示例: generate_report('data.csv', 'receiver@example.com', '每日数据报告') # 结合前面的定时任务脚本,可实现定时发送功能13、自动化性能测试使用Python的 locust 库进行API接口的压力测试。from locust import HttpUser, task, between class WebsiteUser(HttpUser): wait_time = between(5, 15) # 定义用户操作之间的等待时间 @task def load_test_api(self): response = self.client.get("/api/data") assert response.status_code == 200 # 验证返回状态码为200 @task(3) # 指定该任务在总任务中的执行频率是其他任务的3倍 def post_data(self): data = {"key": "value"} response = self.client.post("/api/submit", json=data) assert response.status_code == 201 # 验证数据成功提交后的响应状态码 # 运行Locust命令启动性能测试: # locust -f your_test_script.py --host=http://your-api-url.com14、自动化部署与回滚脚本使用Fabric库编写SSH远程部署工具,这里以部署Django项目为例:from fabric import Connection def deploy(host_string, user, password, project_path, remote_dir): c = Connection(host=host_string, user=user, connect_kwargs={"password": password}) with c.cd(remote_dir): c.run('git pull origin master') # 更新代码 c.run('pip install -r requirements.txt') # 安装依赖 c.run('python manage.py migrate') # 执行数据库迁移 c.run('python manage.py collectstatic --noinput') # 静态文件收集 c.run('supervisorctl restart your_project_name') # 重启服务 # 使用示例: deploy( host_string='your-server-ip', user='deploy_user', password='deploy_password', project_path='/path/to/local/project', remote_dir='/path/to/remote/project' ) # 对于回滚操作,可以基于版本控制系统实现或创建备份,在出现问题时恢复上一版本的部署。
2024年04月18日
60 阅读
0 评论
0 点赞
2024-04-12
JS Document.evaluate()的使用
Document 接口的 evaluate() 方法根据参数中给出的 XPath 表达式选择元素。 XPath 表达式可以在 HTML 和 XML 文档上进行计算。Syntaxjsevaluate(xpathExpression, contextNode, namespaceResolver, resultType, result)ParametersxpathExpression 表示要评估的 xpath 的字符串。contextNode 查询的上下文节点(请参阅 XPath specificatio )。通常将 document 作为上下文节点传递。namespaceResolver 将传递任何命名空间前缀的函数,并应返回表示与该前缀关联的命名空间 URI 的字符串。它将用于解析 xpath 本身内的前缀,以便它们可以与文档匹配。 null 值对于 HTML 文档或不使用命名空间前缀时很常见。resultType 与要返回的结果 XPathResult 的类型相对应的整数。以下值是可能的: ANY_TYPE (0) 无论什么类型都会自然地由给定的表达式产生。 NUMBER_TYPE (1) 包含单个数字的结果集。例如,在使用 count() 函数的 xpath 表达式中很有用。 STRING_TYPE (2) 包含单个字符串的结果集。 BOOLEAN_TYPE (3) 包含单个 boolean 值的结果集。例如,使用 not() 函数的 xpath 表达式很有用。 UNORDERED_NODE_ITERATOR_TYPE (4) 包含与表达式匹配的所有节点的结果集。结果集中的节点不一定与它们在文档中出现的顺序相同。 注意:此类型的结果包含对文档中节点的引用。修改节点将使迭代器失效。修改节点后,尝试迭代结果将导致错误。 ORDERED_NODE_ITERATOR_TYPE (5) 包含与表达式匹配的所有节点的结果集。结果集中的节点的顺序与它们在文档中出现的顺序相同。 注意:此类型的结果包含对文档中节点的引用。修改节点将使迭代器失效。修改节点后,尝试迭代结果将导致错误。 UNORDERED_NODE_SNAPSHOT_TYPE (6) 包含与表达式匹配的所有节点的快照的结果集。结果集中的节点不一定与它们在文档中出现的顺序相同。 注意:这种类型的结果是快照,本质上是匹配节点的列表。您可以通过更改快照节点来更改文档。修改文档不会使快照失效;但是,如果文档发生更改,快照可能与文档的当前状态不对应,因为节点可能已移动、更改、添加或删除。 ORDERED_NODE_SNAPSHOT_TYPE (7) 包含与表达式匹配的所有节点的快照的结果集。结果集中的节点的顺序与它们在文档中出现的顺序相同。 注意:这种类型的结果是快照,本质上是匹配节点的列表。您可以通过更改快照节点来更改文档。修改文档不会使快照失效;但是,如果文档发生更改,快照可能与文档的当前状态不对应,因为节点可能已移动、更改、添加或删除。 ANY_UNORDERED_NODE_TYPE (8) 包含与表达式匹配的任何单个节点的结果集。该节点不一定是文档中与表达式匹配的第一个节点。 FIRST_ORDERED_NODE_TYPE (9) 包含文档中与表达式匹配的第一个节点的结果集。result 用于获取结果的现有 XPathResult 。如果设置为 null 该方法将创建并返回一个新的 XPathResult 。Return value链接到所选节点的 XPathResult 。如果 result 是 null ,则它是一个新对象,如果不是,则它与作为 result 参数传递的对象相同Examplesjsconst headings = document.evaluate( "/html/body//h2", document, null, XPathResult.ANY_TYPE, null, ); /* 在文档中搜索所有 h2 元素。* 结果可能是一个无序的节点迭代器。*/ let thisHeading = headings.iterateNext(); let alertText = "Level 2 headings in this document are:\n"; while (thisHeading) { alertText += `${thisHeading.textContent}\n`; thisHeading = headings.iterateNext(); } alert(alertText); // 提醒所有 h2 元素的文本请注意,在上面的示例中,更详细的 xpath 优于常见的快捷方式(例如 //h2 )。一般来说,如上例所示,更具体的 xpath 选择器通常会带来显着的性能改进,尤其是在非常大的文档上。这是因为评估查询所花费的时间不会浪费时间访问不必要的节点。使用 // 通常很慢,因为它会访问根节点和所有子节点中的每个节点以查找可能的匹配项。通过仔细使用上下文参数可以实现进一步的优化。例如,如果您知道要查找的内容位于 body 标记内的某个位置,则可以使用以下内容:jsdocument.evaluate(".//h2", document.body, null, XPathResult.ANY_TYPE, null);请注意,上面使用 document.body 而不是 document 作为上下文,因此 xpath 从 body 元素开始。(在此示例中, "." 非常重要,它表明查询应从上下文节点 document.body 开始。如果省略 "." (留下 //h2 ),则查询将从根节点 ( html ) 开始,这会更有效。浪费。)请参阅 Introduction to using XPath in JavaScript 了解更多信息。Specifications{card-describe title="Specification"} DOM 标准 # dom-xpathevaluatorbase-evaluate {/card-describe}原文出处:https://runebook.dev/zh/docs/dom/document/evaluate#xpathexpression
2024年04月12日
199 阅读
3 评论
0 点赞
2024-04-10
11个开源免费Web代码编辑器
基于Web的代码编辑器是一种用于直接在Web浏览器中编写代码的应用,无需在本地安装任何软件。 它提供了一个在线开发环境,开发人员可以在其中编写代码、预览效果、更改代码并与团队成员实时协作。基于Web的代码编辑器对于团队之间的协作非常重要, 有许多优势 :可访问性:基于Web的代码编辑器可以从任何具有互联网连接的设备访问,使团队成员可以轻松地远程协同工作。这种可访问性具备更大的灵活性,并支持跨地区和跨时区的协作。实时团队协作:基于Web的代码编辑器通常支持实时协作功能,允许多个团队成员同时处理同一代码。开发人员能够在项目上进行协作,一起编辑和审查代码,并即时反馈。版本控制集成:与Git等版本控制系统集成,使团队能够管理和跟踪代码库的变更。通过两者集成,以提供集中的代码存储库,促进工作流的顺畅协作,从而简化协作。代码共享和审查:基于Web的代码编辑器提供了与团队成员共享代码片段或整个项目的简单方法。这简化了代码评审的过程,团队成员可以直接在编辑器中留下评论、提出更改建议、提供反馈。跨平台兼容性:基于Web的代码编辑器一般独立于平台,允许开发人员使用不同的操作系统(Windows、macOS、Linux)进行协作,而不会出现兼容性问题。具备较高包容性,不管团队成员的开发环境如何都能够为项目做贡献。本文主要推荐一些比较好的开源Web代码编辑器,以直接体验或嵌入到你的产品中。01 Monaco Editor https://github.com/microsoft/monaco-editorMonaco编辑器是微软开发的基于Web的代码编辑器,由VS Code提供功能支持。体验地址:https://microsoft.github.io/monaco-editor/playground.html优点:具有语法突出显示、代码完成和调试功能的丰富功能集。高度可定制和可扩展。性能出色,即使是大型代码库。支持多种编程语言。与其他工具和框架的集成。缺点:与更简单的代码编辑器相比,学习曲线更陡峭。由于其功能丰富的性质,需要更多的资源来运行。有限的离线功能,因为它主要在网络环境中运行。02 OpenVSCode Server https://github.com/gitpod-io/openvscode-server这个项目提供了一个可以在远处服务器上运行的VS Code,允许通过Web浏览器进行访问。它基于Gitpod和GitHub Codespaces 的技术架构 。VS Code团队对其架构进行重构,以支持基于浏览器的工作模式,并且该项目共享了使用最新版本的VS Code所需的最小更改集,具有简单的升级路径和低维护工作量。03 ecode https://github.com/SpartanJ/ecodeecode是为现代硬件设计的轻量级代码编辑器,专注于响应性和性能。它利用硬件加速的eepp GUI,并改进eepp GUI库。功能特征:轻巧便携极简的GUI,可定制的配色方案支持50多种语言的文本高亮显示和LSP语义高亮显示多光标支持,实现高效编辑终端集成,实现无缝命令执行用于快速访问编辑器功能的命令行自动完成和可定制的键盘绑定04 Code Server https://github.com/coder/code-server Code-Server是一个支持在浏览器中运行VS Code的开源项目,能够在任何设备上提供一致的开发环境。它还支持使用云服务器以获得更快的执行效率,并为移动的用户保留电池寿命。05 Tabby https://github.com/TabbyML/tabbyTabby是一个可以私有化部署的AI编码助手,提供了GitHub Copilot的开源和本地部署方案。它是独立的,不需要DBMS或云服务,具有易于集成的OpenAPI接口,并支持消费级GPU。另外,Tabby可以使用Docker轻松安装。06 Neko Code Editor https://github.com/flyingcatdeveloper/nceNeko Code Editor是一个简单的代码编辑器,具有Monaco Editor类似的功能,包括:控制台、在新选项卡中打开代码、多文件功能、项目管理、DevLog更新、本地数据保存、可自定义设置等功能。 功能特征:Monaco编辑器功能: 具有代码自动完成、 MDN 应 用 等功能。控制台:只需单击一个按钮即可轻松查看控制台。在新选项卡中打开代码:查看代码时,它看起来就像一个网页。多文件功能:拥有尽可能多的文件,支持HTML,CSS,文件夹和JS文件。仪表板:在一个位置查看所有编辑器,沿着显示上次打开它们的时间。项目导入:开始在新设备上工作或通过导入项目恢复已删除的数据。项目下载:安全下载整个项目,以防止意外数据丢失。保持更新:随时了解DevLog的新功能和修复。数据 备 份:数据使用localStorage和IndexedDB保存,可以轻松加载到项目。自定义设置:自定义编辑器的设置,包括编辑器名称、自动保存和文件压缩。07 CodeMirror https://github.com/codemirror/dev/https://codemirror.net/CodeMirror是一个可扩展的Web代码编辑器组件,可用于实现具有高级编辑功能和丰富编程接口的文本输入,并支持进行进一步扩展。功能特征:可访问性:适用于屏幕阅读器和键盘用户。移动的支持:在手机上使用平台的本地选择和编辑功能。双向文本:支持从右到左和从左到右的混合文本。高亮:颜色代码,以反映句法结构。显示行号:显示代码旁边带有行号或其他信息的间距。自动完成:在编辑器中提供特定语言的完成提示。代码折叠:暂时隐藏文档的某些部分。搜索/替换:特定于编辑器的搜索、regexp搜索和替换功能。完整解析:详细的解析树允许许多类型的语言集成。扩展接口:健壮地实现要求苛刻的编辑器扩展。模块化:大多数特性都是在通用公共API之上实现的。速度:即使在大型文档和长行上也能保持响应。自动关闭:在键入时自动插入匹配的括号。Linting:在编辑器中显示错误和警告消息。灵活的样式:混合字体样式和大小,在内容中添加小部件。主题化:导入或创建自定义可视化编辑器样式。协作编辑:允许多个用户编辑同一文档。历史记录 撤销 :支持协作编辑的撤销、重做功能。多个选择:一次选择和编辑文档的多个范围。国际化:提供自定义文本以显示或通知用户。08 CodeFlask https://github.com/kazzkiq/CodeFlaskCodeFlask是一个轻量级、可定制的基于Web的代码编辑器。它提供了一些基础的代码编辑功能,如:语法突出显示、自动完成和代码格式化。CodeFlask的设计目标为易于使用,可以被轻松地集成到Web应用程序中。当需要一个简单和轻量级的代码编辑器时,它是一个合适的选择。09 CodeJar https://github.com/antonmedv/codejarCodeJar是一个强大的开源、可嵌入的Web代码编辑器。功能特征:轻量级(仅2.45 kB)没有依赖关系适用于Chrome,Safari,Firefox,iOS,iPadOS,Android.支持在新行上保留缩进自动添加右括号、引号使用Tab键缩进支持撤消、 重做可以使用任何高亮显示库, 如:PrismJS or 或 highlight.js 或自定义开发10 Rustpad https://github.com/ekzhang/rustpadRustpad是一个基于操作转换算法的高效和最小的开源协作文本编辑器。只需要一个小的Docker镜像,并且不需要数据库。服务器是使用Rust编写的warp web服务器框架,而前端是使用TypeScript编写的React和Monaco接口。编辑器通过WebSocket与服务器进行通信,性能高效,但在服务器重新启动或24小时不活动后可能断开连接,导致临时文档丢失。11 ICEcoder https://github.com/icecoder/ICEcoderICEcoder是一个基于浏览器的代码编辑器,允许高效的网站开发和维护。它可以在线或离线使用,并与Linux,Windows和Mac平台兼容。唯一的要求是PHP 7(推荐使用7.4)。但需要注意的是,目前这个开源库已经停止更新。原文出处:https://mp.weixin.qq.com/s/F_DaUkUnVDRNhCHqmgXWDQ
2024年04月10日
21 阅读
0 评论
0 点赞
2024-04-10
thinkphp6 Filesystem文件系统类的使用
config/filesystem.php配置文件中配置上传根目录及上传规则,例如:return [ 'default' => 'local', 'disks' => [ 'local' => [ 'type' => 'local', 'root' => app()->getRuntimePath() . 'storage', ], 'public' => [ 'type' => 'local', 'root' => app()->getRootPath() . 'public/storage', 'url' => '/storage', 'visibility' => 'public', ], // 更多的磁盘配置信息 ], ];filesystem api的使用: //实例化类 传入当前控制器的app类 $file = new Filesystem($this->app); /** * config/filesystem.php 配置文件系统路径。 * disk('public) 是选取config/filesystem.php 里面的public配置,可以省略disk,如果省略默认就是runtime/storage路径。 */ $getMetadata = $file->disk('public')->getMetadata('20220509.png');//获取元数据 $getSize = $file->disk('public')->getSize('20220509.png');//获取大小 $getTimestamp = $file->disk('public')->getTimestamp('20220509.png');//获取时间戳 // $getWithMetadata = $file->disk('public')->getWithMetadata('20220509.png', $getMetadata); $listContents = $file->disk('public')->listContents('topic');//列出目录下的内容 dump($listContents); $delete = $file->disk('public')->delete('topic');//删除文件 $putFile = $file->disk('public')->putFile('', $image);//保存文件 $putFileAs = $file->disk('public')->putFileAs('', $image);//指定文件名保存文件 $putStream = $file->disk('public')->putStream('', $image);//创建文件或更新(如果存在) $putStream = $file->disk('public')->put('', $image);//创建文件或更新(如果存在).<br><br> $write = $file->disk('public')->write('text\zhoage.text', '这是内容');//写入文件 $write = $file->disk('public')->createDir('zhao');//创建目录 $write = $file->disk('public')->rename('text\zhoage.text','zhao.txt');//修改文件名称 $write = $file->disk('public')->has('zhao.txt');//检查文件是否存在 $write = $file->disk('public')->read('zhao.txt');//读取文件 $write = $file->disk('public')->update('zhao.txt','这是更新后的内容');//修改现有文件 $write = $file->disk('public')->copy('zhao.txt','zhaoge/fuzhi.txt');//复制文件
2024年04月10日
67 阅读
0 评论
0 点赞
1
2
3
4
...
6