Southerly 发布的文章 - Southerly 个人博客、生活记录!
首页
复制
搜索
前进
后退
重载网页
和我当邻居
给我留言吧
首页
留言
友链
壁纸
归档
关于
相册
推荐
图床
API
站长工具箱
佛曰
联系站长
搜 索
1
每日60秒读懂世界
602 阅读
2
Typecho相册单页模板适用于各个主题
558 阅读
3
一款IP定位插件for Typecho(Joe主题)
529 阅读
4
接入51LA统计——本站(Joe)同款网站浏览量记录
523 阅读
5
中华人民共和国网络安全法
406 阅读
学习资源
python脚本
资源分享
源码
分享
各类教程
安卓逆向
Typecho
日常记录
登录
/
注册
搜 索
标签搜索
分享
教程
typecho
记录
生活
笔记
博客
joe
日常
故事
美化
python
脚本
源码
Southerly
博主
4天前
在线
累计撰写
41
篇文章
累计收到
137
条评论
首页
栏目
学习资源
python脚本
资源分享
源码
分享
各类教程
安卓逆向
Typecho
日常记录
页面
留言
友链
壁纸
归档
关于
相册
推荐
图床
API
站长工具箱
佛曰
联系站长
用户登录
登录
注册
找到
41
篇与
Southerly
相关的结果
2024-07-29
摸鱼日历(每天更新)
专为打工人定制的摸鱼日历
2024年07月29日
39 阅读
2 评论
0 点赞
2024-06-28
typecho博客Joe主题首页文章列表不显示
今天突然发现博客首页文章列表一直显示加载中,加载不出来。具体如图:解决办法查看typecho根目录config.inc.php文件中是否开启了Debug关闭debug后,恢复正常!
2024年06月28日
64 阅读
0 评论
0 点赞
2024-02-04
Typecho仿微信朋友圈主题 – Icefox
主题介绍:Icefox 是一款专为Typecho博客平台设计的免费开源主题,它模仿了微信朋友圈的交互风格和视觉效果,致力于提供一种新颖且社交化的博客体验。主要功能亮点:朋友圈样式布局:主题采用了类似微信朋友圈的时间线形式展示文章,增强了用户与读者间的互动性。个性化设置:顶部背景图设置:允许博主自定义上传一张图片作为页面顶部的大背景,营造独特的氛围。用户头像与昵称设置:支持个性化配置博主的头像与昵称,能展现个人特色。内容管理:添加文章时可设置朋友圈图片:每篇博客文章可以搭配类似于朋友圈动态中的封面图片。图片点击放大功能:文章内嵌图片支持点击后全屏或放大查看。社交互动元素:查看评论功能:内置完善的评论系统,方便读者对文章发表看法并与博主交流。点赞功能:读者可以直接对文章或评论进行点赞,增加社区活跃度。阅读优化:文字过多自动收缩:对于长篇文章或段落,主题会智能处理,当内容过长时显示摘要,并提供“查看全部”按钮,以保证界面整洁。后台控制选项:视频播放设置:博主在后台可以配置是否让嵌入的视频自动播放,以适应不同用户的浏览习惯。评论管理:评论折叠与展开:针对评论数量较多的情况,提供了点击进入详情的功能,使页面加载更快速,同时保持良好的用户体验。下载链接:隐藏内容,请前往内页查看详情
2024年02月04日
163 阅读
9 评论
1 点赞
2024-01-26
joe主题美化教程——手机侧边栏
上图看看,给手机侧边栏几个栏目加了图标修改了颜色具体代码及位置如下:在header.php文件中修改<span><font color="#ff8900" style="font-weight:600;"> <i class="fa fa-home"></i> 首页</font></span><span><font color="0909f7b" style="font-weight:600;"> <i class="fa fa-mail-reply-all"></i> 栏目</font></span><span><font color="#f709f7b" style="font-weight:600;"> <i class="fa fa-window-restore"></i> 页面</font></span><span><font color="#66ff00b" style="font-weight:600;"> <i class="fa fa-thumbs-o-up"></i> 推荐</font></span>
2024年01月26日
135 阅读
0 评论
4 点赞
2023-11-24
一款超唯美情侣博客源码
演示图正文:搭建教程环境php 5.56,Nginx 1.20.2,MySQL 5.6.50创建站点,上传源码,创建数据库,/www/wwwroot/你的目录/admin/connect.php修改换成你自己的数据库后台路径。你的域名/admin账号admin后台密码123456
2023年11月24日
274 阅读
2 评论
3 点赞
2023-10-18
删除当前目录下内容相同的一个文件--Python脚本
使用说明:1.需要有python环境2.将脚本放在需要处理的文件夹里,双击运行就可以了源码如下:import os # 获取当前目录下所有txt文件 def get_txt_files(): files = [] for file in os.listdir("."): if file.endswith(".txt"): files.append(file) return files # 比较所有txt文件并删除相同的文件 def compare_and_delete(): while True: txt_files = get_txt_files() deleted_files = set() # 存储被删除的文件 for i in range(len(txt_files)): if txt_files[i] in deleted_files: continue for j in range(i + 1, len(txt_files)): if txt_files[j] in deleted_files: continue file1 = txt_files[i] file2 = txt_files[j] with open(file1, "r") as f1, open(file2, "r") as f2: if f1.read() == f2.read(): os.remove(file2) print("删除文件:", file2) print("相同的文件:", file1, file2) deleted_files.add(file2) if not deleted_files: # 如果没有要删除的文件,则跳出循环 break # 执行脚本 compare_and_delete() # 在处理完成后停留在命令窗口 raw_input() # For Python 2 # input() # For Python 3
2023年10月18日
125 阅读
2 评论
2 点赞
2023-08-03
一款经典小游戏,为没有网络的电脑添砖加瓦
由于种种原因电脑不能联网,为使摸鱼更加快乐,闲暇时间写了个小游戏!运行界面如下图:看到界面就知道是什么了吧!没错,是它!是它!就是它————数独游戏!由于是单机电脑,环境比较单一,只有一个python2.7版本(无其它包),仅用自带的包写了一个界面,勉强能玩,大佬勿喷!食用方式1:保存代码为.py或者.pyw即可在有环境的电脑上运行食用方式2:下载我打包好的exe双击运行即可游玩(附文章底部)代码如下,如有bug,请指出# coding:utf-8 import Tkinter as tk import tkMessageBox import random class SudokuGame: def __init__(self, root): self.root = root self.root.title("SuDuKu Game") self.board = [[0 for _ in range(9)] for _ in range(9)] self.generate_board(70) self.labels = [[None for _ in range(9)] for _ in range(9)] self.selected_cell = (0, 0) self.highlighted_number = None # 存储高亮显示的数字 self.draw_board() self.root.bind("<KeyPress>", self.on_key) self.root.bind("<Button-1>", self.on_click) self.root.bind("<ButtonRelease-1>", self.on_double_click) self.root.bind("<Button-3>", self.clear_cell) # 绑定鼠标右键事件 self.create_menu() def create_menu(self): menu_bar = tk.Menu(self.root) # 创建"游戏"菜单 game_menu = tk.Menu(menu_bar, tearoff=0) game_menu.add_command(label="restart", command=lambda: self.restart_game(70)) menu_bar.add_cascade(label="Game", menu=game_menu) # 创建"难度"菜单 difficulty_menu = tk.Menu(menu_bar, tearoff=0) difficulty_menu.add_radiobutton(label="s", command=lambda: self.set_difficulty(60)) difficulty_menu.add_radiobutton(label="ss", command=lambda: self.set_difficulty(50)) difficulty_menu.add_radiobutton(label="sss", command=lambda: self.set_difficulty(40)) menu_bar.add_cascade(label="Difficulty", menu=difficulty_menu) self.root.config(menu=menu_bar) def restart_game(self, difficulty): self.generate_board(difficulty) self.update_board() def set_difficulty(self, difficulty): self.board=[[0 for _ in range(9)] for _ in range(9)] self.fill_board(0, 0) self.remove_numbers(difficulty) self.generate_board(difficulty) # 重新生成数独盘面 self.update_board() # 更新界面 def generate_board(self, difficulty): self.board = [[0 for _ in range(9)] for _ in range(9)] self.fill_board(0, 0) self.remove_numbers(difficulty) def fill_board(self, row, col): if col == 9: row += 1 col = 0 if row == 9: return True numbers = list(range(1, 10)) random.shuffle(numbers) for num in numbers: if self.is_valid_move(row, col, num): self.board[row][col] = num if self.fill_board(row, col + 1): return True self.board[row][col] = 0 return False def is_valid_move(self, row, col, num): # Check row for i in range(9): if self.board[row][i] == num: return False # Check column for i in range(9): if self.board[i][col] == num: return False # Check 3x3 grid start_row = (row // 3) * 3 start_col = (col // 3) * 3 for i in range(start_row, start_row + 3): for j in range(start_col, start_col + 3): if self.board[i][j] == num: return False return True def remove_numbers(self, difficulty): count = 81 - difficulty attempts = 0 while count > 0: row = random.randint(0, 8) col = random.randint(0, 8) if self.board[row][col] != 0: self.board[row][col] = 0 count -= 1 attempts += 1 if attempts >= 100: # 如果尝试次数超过100次,则跳出循环 break if count < 0: tkMessageBox.showinfo("tips", "Setting failed,please try again!!") def draw_board(self): for i in range(9): for j in range(9): number = self.board[i][j] if number == 0: text = '' else: text = str(number) label = tk.Label(self.root, text=text, font=("Arial", 16), width=2, relief=tk.SOLID) label.grid(row=i, column=j) self.labels[i][j] = label # 绑定鼠标双击事件 label.bind("<Double-Button-1>", lambda event, num=number: self.highlight_number(num)) # 判断是否需要高亮显示该数字 if number == self.highlighted_number: label.config(bg='yellow') def update_board(self): for i in range(9): for j in range(9): number = self.board[i][j] label = self.labels[i][j] if number == 0: text = '' else: text = str(number) # 判断是否需要高亮显示该数字 if number == self.highlighted_number: label.config(bg='yellow') else: label.config(bg='white') label.config(text=text) def on_key(self, event): if event.char.isdigit() and 1 <= int(event.char) <= 9: num = int(event.char) row, col = self.selected_cell self.board[row][col] = num self.update_board() self.check_win() def select_cell(self, row, col): self.selected_cell = (row, col) num = self.board[row][col] for i in range(9): for j in range(9): label = self.labels[i][j] if (i, j) == (row, col): label.config(bg='yellow') else: label.config(bg='white') if num == self.highlighted_number: if (i, j) == (row, col): label.config(bg='yellow') else: label.config(bg='white') else: if (i, j) == (row, col): label.config(bg='yellow') elif self.board[i][j] == self.highlighted_number: label.config(bg='yellow') else: label.config(bg='white') def on_click(self, event): x, y = self.root.winfo_pointerxy() widget = self.root.winfo_containing(x, y) for i in range(9): for j in range(9): if widget == self.labels[i][j]: self.select_cell(i, j) def on_double_click(self, event): x, y = self.root.winfo_pointerxy() widget = self.root.winfo_containing(x, y) for i in range(9): for j in range(9): if widget == self.labels[i][j]: self.highlight_number(self.board[i][j]) def clear_cell(self, event): row, col = self.selected_cell self.board[row][col] = 0 self.update_board() self.check_win() def highlight_number(self, num): if self.highlighted_number is None: self.highlighted_number = num else: self.highlighted_number = None self.update_board() def check_win(self): for i in range(9): for j in range(9): if self.board[i][j] == 0: return False tkMessageBox.showinfo("tips", "Win!") if __name__ == "__main__": root = tk.Tk() game = SudokuGame(root) root.mainloop()隐藏内容,请前往内页查看详情
2023年08月03日
251 阅读
2 评论
1 点赞
2023-05-28
Typecho对接github仓库做图床
Typecho是一款轻量级的开源博客系统,支持PHP+MySQL数据库。它的特点是简单易用、扩展性强、响应速度快等。配合Github的静态文件托管功能,可以轻松实现博客图片的存储和管理。下面来详细介绍Typecho使用Github作为图床的方法:1.创建Github仓库首先在Github上创建一个仓库,用来存放博客中的图片。需要注意的是,该仓库的名称不能与你的用户名相同,否则会导致冲突。例如我的用户名是“foreverycs”,那么我创建的仓库名可以是“imgs”!2.生成Github访问token为了在Typecho中访问Github仓库,需要生成一个访问token。在Github页面中点击右上角个人头像,选择“Settings”->“Developer settings”->“Personal access tokens”,然后点击“Generate new token”,按照提示操作即可。需要勾选“repo”和“read:user”权限。3.安装插件在Typecho中安装并启用“GithubFile”插件,用于将文章中的图片链接替换为Github仓库中的真实链接。该插件的下载地址为:https://github.com/MliKiowa/GithubFile4.在Typecho中配置Github信息在Typecho后台的“插件”->启用插件即可,然后配置信息填写Github的用户名、仓库名、访问token。保存设置后,Typecho写文章是添加的附件图片会自动上传至Github仓库中。5.在文章中插入图片在文章中需要插入图片时,直接点击添加的附件或使用Markdown语法来添加图片即可。例如: ![t01945d79566462c0fb.jpg]https://github.com/foreverycs/uploads/blob/main/2023/05/28/1685279075.jpg?raw=true 其中,“foreverycs”是我的Github用户名,“uploads”是我创建的Github仓库名,“t01945d79566462c0fb.jpg”是我上传到Github仓库中的图片文件名。通过以上插件,结合github仓库,就可以使用Github作为Typecho博客的图床了。优点:免费、便捷、无限流量等。
2023年05月28日
402 阅读
4 评论
3 点赞
2023-05-25
文件夹或者文件名称批量修改(python)
当你需要将多个文件名中的某个字符或字符串替换为另一个字符或字符串时,你可以写一个简单的 Python 脚本来实现这个任务。这篇文章将介绍一个使用 os 模块实现的简单文件重命名脚本。第一步:导入 os 模块在 Python 中,os 模块提供了访问文件系统的函数。为了在 Python 脚本中使用 os 模块,我们需要导入该模块:import os第二步:获取当前脚本所在目录在这个脚本中,我们需要获取当前脚本所在目录。Python 提供了 os.path 模块来处理目录和路径。我们可以使用 os.path.abspath(__file__) 函数来获取当前脚本的绝对路径,然后使用 os.path.dirname() 函数获得当前脚本所在的目录路径。这里的代码如下:dirpath = os.path.dirname(os.path.abspath(__file__))其中,__file__ 变量代表当前脚本的文件名(包括路径)。第三步:输入旧字符串和新字符串接下来,我们需要从用户处获取旧字符串和新字符串。我们可以使用 input() 函数来获得用户输入:old_string = input("请输入需要替换的旧字符串:") new_string = input("请输入替换成的新字符串:")这里,input() 函数将提示用户输入旧字符串和新字符串,并将其存储在 old_string 和 new_string 变量中。第四步:重命名文件接下来,我们可以使用 os.listdir() 函数枚举目录中的所有文件和文件夹,并使用 os.rename() 函数将其重命名为新名称。for filename in os.listdir(dirpath): # 构造旧的文件路径以及新的文件路径 old_filepath = os.path.join(dirpath, filename) new_filepath = os.path.join(dirpath, filename.replace(old_string, new_string)) # 如果旧文件路径与新文件路径相同,则跳过 if old_filepath == new_filepath: continue # 判断文件是否为文件夹 if os.path.isdir(old_filepath): # 重命名文件夹 os.rename(old_filepath, new_filepath) else: # 重命名文件 os.rename(old_filepath, new_filepath)这里,os.rename() 函数接受两个参数:旧文件名和新文件名。如果需要重命名文件夹,我们应该先递归地重命名子文件夹和子文件,然后再重命名当前文件夹的名称。第五步:输出完成信息最后,我们可以输出一个完成信息来提示用户脚本已经完成执行。print("完成!")完整代码下面是这个简单的 Python 文件重命名脚本的完整代码:import os # 获取当前脚本所在目录 dirpath = os.path.dirname(os.path.abspath(__file__)) # 获取要替换的旧字符串和替换成的新字符串 old_string = input("请输入需要替换的旧字符串:") new_string = input("请输入替换成的新字符串:") for filename in os.listdir(dirpath): # 构造旧的文件路径以及新的文件路径 old_filepath = os.path.join(dirpath, filename) new_filepath = os.path.join(dirpath, filename.replace(old_string, new_string)) # 如果旧文件路径与新文件路径相同,则跳过 if old_filepath == new_filepath: continue # 判断文件是否为文件夹 if os.path.isdir(old_filepath): # 重命名文件夹 os.rename(old_filepath, new_filepath) else: # 重命名文件 os.rename(old_filepath, new_filepath) print("完成!")效果如图若需要循环替换,在获取脚本所在路径后面加一句while True:
2023年05月25日
131 阅读
0 评论
3 点赞
2023-05-11
手机壁纸第二弹——懂你的壁纸(二)
暂无简介
2023年05月11日
182 阅读
0 评论
2 点赞
1
2
...
5