WordPress 显示链接功能

WordPress 自 3.5 版本以后,默认隐藏了“链接”的功能,如果我们需要添加友情连接,可以借助插件或者修改代码的方式进行操作。但是本人不喜欢安装太多插件,所以使用修改代码的方式显示“链接”功能,进而添加友情链接。

“链接”功能显示方式

将下列代码添加进当前主题的 functions.php 即可:

add_filter('pre_option_link_manager_enabled','__return_true');

将上述代码粘贴至 functions.php 后,点击“更新文件”即可在左侧选择栏中看到“链接”功能。

你还想知道……

如何替换 Gravatar 头像?点击查看解决方案

连接共享打印机提示 Operation could not be completed (error 0x00000709)

连接共享打印机时出现的问题

最近需要使用其他电脑连接的打印机打印内容。通过网络成功查找到对应的机器及相关打印机,但双击连接一直提示“Operation could not be completed (error0x00000709)
Double check the printer name and make sure that the printer is connected to the network.
”,通过不断搜索,最终在微软社区找到了解决办法。

image
如图提示 Operation could not be completed (error0x00000709)

当 Windows 11 尝试连接共享打印机时会出现错误消息 0x00000709,出现此错误是因为默认连接方法在 22H2 发生了更改。更改组策略编辑器中的设置可以解决该问题。

全新打印机策略是导致报错的罪魁祸首:RPC 连接设置。需要将其切换到命名管道,它才能再次工作。

解决办法

非 Windows 11 家庭版

请注意,在继续之前,您应该以管理员身份登录

在 Windows 搜索中键入“组策略”(Group Policy),然后按下 Enter 键。

导航到以下位置:
1. 管理模板 > 打印机
2. 双击打开右侧的配置“RPC 连接设置”。
3. 确保它是“已启用”。
4. 在下面的选项下,从下拉菜单中选择“通过命名管道进行 RPC” 。
5. 关闭该策略,然后打开“打印机浏览”。
6. 确保该选项已启用。

以上是翻译过的内容,原文如下:

This method helped most users to resolve the error. Note that you should be logged in as an administrator before proceeding.

  • Type Group Policy in Windows search and press Enter.
  • Navigate to the following location:
    Administrative Templates > Printers
  • Double-click to open Configure RPC connection settings on the right.
  • Make sure it is enabled.
  • Under Options below, pick RPC over named pipes from the drop-down menu.
  • Close down the policy and then open Printer Browsing.
  • Ensure the option is enabled.
image 1
Configure RPC connection settings

Windows 11 家庭版

对于 Windows 11 家庭版,请尝试注册表编辑(相当于组策略设置):

[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\RPC]

RpcUseNamedPipeProtocol 有 2 个值可以配置:

0:RpcOverTcp(默认)
1:RpcOverNamedPipes
将 0 更改为 1

通过上述操作,我的电脑已经自动安装好打印机驱动并可以正常使用共享打印机了。

以上是我遇到的相关问题解决方案,可能与你所遇到的问题相似或不同,解决方案可能有用或者无法解决,无法解决建议尝试搜索其他相关解决办法。

引用

Windows 11 Error message 0x00000709 while connecting to shared printer

How to fix printing error 0x00000709 (Operation could not be completed) in Windows?

笔记本电脑被爆装备

今天很不顺,坐大客往回赶,看时间不赶趟,遂打了辆滴滴,到站后准备拿东西下车去取票,左手拿自己的行李时,右手很自然的把笔记本电脑包抓住要往肩上背,结果没拿稳,笔记本电脑包就向水泥地快速的亲吻了上去🙂。这个笔记本电脑包还很薄,没有对四个底角加缓冲的材料。

清脆的咔哒一声,我的心也跟着一起碎了。取完票上车赶紧看了一下电脑,果然笔记本电脑左上角爆装备了,散热口的边全碎了,里面的散热板也有点歪了,当时赶紧开电脑看了一下,没什么大问题,就是左上角挂彩了。

虽然现在我再用它写这个状态,但它不再完美了😭。

所以,来回需要带笔记本电脑还是得买四周有缓冲材料的笔记本电脑背包。同时,来回拿笔记本电脑包的时候一定要抓稳。

电信光猫 TEWA-708G 获取超级密码教程

我使用的是电信光猫 TEWA-708G,超级用户的密码已经不再是固定的了,是随机生成的,所以需要一些操作才能够获取到超级密码。

这个教程不能保证适用所有型号为 TEWA-708G 的光猫,因为通过搜索有些同型号的光猫使用的是 sessionKey 进行查找,有些则是以 set1_sessionKey_*** 进行查找,我的设备使用的是 set1_sessionKey_*** ,所以做一个记录:

1. 首先使用普通用户登录
用户名和密码在光猫的背面,登录地址:192.168.1.1:8080,用户名一般为 useradmin,并在光猫 USB 接口中插好 U 盘

2. 进入“设备管理页面”
点击“管理”—“设备管理”或访问:http://192.168.1.1:8080/MD_Device_user.html
一定要确认进入设备管理界面,这个界面连 USB 都给屏蔽了

image
“设备管理”页面

3. 查找 set1_sessionKey_***
按 F12 或在页面点右键→检查,然后在里面搜索 set1_sessionKey_,你会找到一个 set1_sessionKey_*** 之类的结果,把 *** 记下来

image 1
查找 set1_sessionKey_***,如图 *** 为“304”

4. 构造命令并执行
切换到 Console 窗口,在输入框中输入如下内容:location.assign("/usbbackup.cmd?action=backupeble&set1_sessionKey=set1_sessionKey_***") 然后回车

image 2
进入 Console 窗口输入上方代码

5. 备份配置
页面打开后,右键备份配置,点击“检查”,删除 disable 字段,此时可以看到按钮已从禁用状态转为可点击状态,现在可以点击“备份配置”正常备份了,点击之后页面会全白,那是正常的

image 3
删除 Button 的 disable 字段

6. 得到备份文件
U 盘上会生成一个名为 e8_Config_Backup 的文件夹,其下的 ctce8_TEWA-708G.cfg 就是路由器配置文件

image 4
查看 U 盘中是否已存在对应文件夹及配置文件

7. 解密文件
如果用记事本打开 ctce8_TEWA-708G.cfg,会是一堆乱码。要使用 xor(点击跳转) 或者 router pass view 打开配置文件,搜索 TeleComAccount 字段 ,下面的 Password 内即为超级密码

image 5
使用 xor 转换配置文件
image 6
搜索 TeleComAccount 字段,Password 内即为超级用户密码

8. 关闭启用周期上报
进入 Web 后台管理界面后,切换到“网络”—“远程管理”选项卡,清除勾选“启用周期上报”项,这样就彻底阻止了电信对光猫的远程控制功能

image 7
关闭“启用周期上报”

以上就是电信光猫 TEWA-708G 获取超级密码的整个教程,但不保证这个教程适用于这个光猫型号的所有设备,所以,如果按照上述操作发现无法获取超级密码则需要搜索其他获取方案。

引用

电信光猫TEWA-708G最新获取超级密码教程
天翼网关3.0(tewa-708g)续
电信光猫TEWA-708G最详细获取超级密码教程

基于 winston 实现 Nest.js 应用日志服务

Nest.js logo
Nest.js Logo

实现 Nest.js 应用日志服务有很多选择,较为出名的有:Log4jswinstonPino

这次就以 winston 为例,记录一下如何实现 Nest.js 应用日志服务。本文参考了搜索引擎中许多教程与案例,如果觉得有任何问题可以留言与我交流。

引入 winston

相关依赖:winston、nest-winston、winston-daily-rotate-file

pnpm install winston nest-winston winston-daily-rotate-file

winston-daily-rotate-file 用于实现日志文件的定期归档。由于应用日志量一般都非常大,因此需要定期自动对日志文件进行轮换、归档与删除。

配置 winston

app.module.ts

import {
  // ...
  Module,
} from '@nestjs/common';
import { WinstonModule } from 'nest-winston';
import * as winston from 'winston';
import 'winston-daily-rotate-file';
// ...

@Module({
  controllers: [],
  imports: [
    // ...
    WinstonModule.forRoot({
      transports: [
        new winston.transports.DailyRotateFile({
          dirname: `logs`, // 日志保存的目录
          filename: '%DATE%.log', // 日志名称,占位符 %DATE% 取值为 datePattern 值。
          datePattern: 'YYYY-MM-DD', // 日志轮换的频率,此处表示每天。
          zippedArchive: true, // 是否通过压缩的方式归档被轮换的日志文件。
          maxSize: '20m', // 设置日志文件的最大大小,m 表示 mb 。
          maxFiles: '14d', // 保留日志文件的最大天数,此处表示自动删除超过 14 天的日志文件。
          // 记录时添加时间戳信息
          format: winston.format.combine(
            winston.format.timestamp({
            	format: 'YYYY-MM-DD HH:mm:ss',
            }),
            winston.format.json(),
          ),
        }),
      ],
    }),
  ],
  // ...
})
export class AppModule { // ... }

在全局中间件、过滤器以及拦截器中记录日志

获取请求头信息的工具方法

getReqMainInfo.ts

import { Request } from 'express';

export const getReqMainInfo: (req: Request) => {
  [prop: string]: any;
} = req => {
  const { query, headers, url, method, body, connection } = req;

  // 获取 IP
  const xRealIp = headers['X-Real-IP'];
  const xForwardedFor = headers['X-Forwarded-For'];
  const { ip: cIp } = req;
  const { remoteAddress } = connection || {};
  const ip = xRealIp || xForwardedFor || cIp || remoteAddress;

  return {
    url,
    host: headers.host,
    ip,
    method,
    query,
    body,
  };
};

在全局中间件中记录日志

logger.middleware.ts

import { Inject, Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';
import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
import { Logger } from 'winston';
import { getReqMainInfo } from '../../utils/getReqMainInfo';

@Injectable()
export default class LoggerMiddleware implements NestMiddleware {
  // 注入日志服务相关依赖
  constructor(
    @Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger,
  ) {}

  use(req: Request, res: Response, next: NextFunction) {
    // 获取请求信息
    const {
      query,
      headers: { host },
      url,
      method,
      body,
    } = req;

    // 记录日志
    this.logger.info('route', {
      req: getReqMainInfo(req),
    });

    next();
  }
}

在全局异常过滤器中记录日志

uinify-exception.filter.ts

import {
  ArgumentsHost,
  Catch,
  ExceptionFilter,
  HttpException,
  HttpStatus,
  Inject,
} from '@nestjs/common';
import { Response, Request } from 'express';
import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
import { Logger } from 'winston';
import { getReqMainInfo } from '../../utils/getReqMainInfo';

@Catch()
export default class UnifyExceptionFilter implements ExceptionFilter {
  // 注入日志服务相关依赖
  constructor(
    @Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger,
  ) {}

  catch(exception: HttpException, host: ArgumentsHost) {
    const ctx = host.switchToHttp(); // 获取当前执行上下文
    const res = ctx.getResponse<Response>(); // 获取响应对象
    const req = ctx.getRequest<Request>(); // 获取请求对象
    const status =
      exception instanceof HttpException
        ? exception.getStatus()
        : HttpStatus.INTERNAL_SERVER_ERROR;

    const response = exception.getResponse();
    let msg =
      exception.message || (status >= 500 ? 'Service Error' : 'Client Error');
    if (Object.prototype.toString.call(response) === '[object Object]') {
      if (typeof response === 'string') {
        msg = response;
      }
    }
    const { query, headers, url, method, body } = req;

    // 记录日志(错误消息,错误码,请求信息等)
    this.logger.error(msg, {
      status,
      req: getReqMainInfo(req),
      // stack: exception.stack,
    });

    res.status(status >= 500 ? status : 200).json({ code: 1, msg });
  }
}

在响应拦截器中记录日志

unify-response.interceptor.ts

import {
  CallHandler,
  ExecutionContext,
  Inject,
  Injectable,
  NestInterceptor,
} from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { Request } from 'express';
import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
import { Logger } from 'winston';
import { getReqMainInfo } from '../../utils/getReqMainInfo';

@Injectable()
export class UnifyResponseInterceptor implements NestInterceptor {
  constructor(
    @Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger,
  ) {}

  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    const ctx = context.switchToHttp();
    const req = ctx.getRequest<Request>();

    return next.handle().pipe(
      map(data => {
        this.logger.info('response', {
          responseData: data,
          req: getReqMainInfo(req),
        });
        return {
          code: 0,
          data,
          msg: '成功',
        };
      }),
    );
  }
}

应用全局中间件、过滤器以及拦截器

app.module.ts

import {
  MiddlewareConsumer,
  Module,
  NestModule,
  RequestMethod,
} from '@nestjs/common';
import { APP_FILTER } from '@nestjs/core';
import { WinstonModule } from 'nest-winston';
import * as winston from 'winston';
import 'winston-daily-rotate-file';
import UnifyExceptionFilter from './common/uinify-exception.filter';
import logger from './common/logger.middleware';
// ...

@Module({
  // ...
  imports: [
    // ...
    WinstonModule.forRoot({
     // ...
    }),
  ],
  providers: [
    // ...
    // 应用全局过滤器
    {
      provide: APP_FILTER,
      useClass: UnifyExceptionFilter,
    },
    // 应用拦截器
    {
      provide: APP_INTERCEPTOR,
      useClass: UnifyResponseInterceptor,
    },
  ],
})
export class AppModule implements NestModule {
  // 应用全局中间件
  configure(consumer: MiddlewareConsumer) {
    consumer.apply(logger).forRoutes({ path: '*', method: RequestMethod.ALL });
  }
}

完成以上配置后,项目目录下就会包含访问及错误信息的日志文件。日志文件将每天自动归档压缩,超过 14 天的日志也将被自动删除。

引用

基于 Winston 实现 NestJS 应用日志服务
NestJS: Setting up file logging daily rotation with winston

Windows 相关知识操作及部分快捷键

之前机缘巧合,搜索了一下 Windows 相关知识,发现有一些知识和快捷键确实不了解,也从没注意到过,在此记录一下作为整理,如果你有其他关于 Windows 的相关知识和快捷键可以与我一同分享。

Windows 相关知识

1. 命令行访问带空格的目录时,必需要加引号,不然访问不到:

e.g. C:\>cd "Program Files\Java"

另最新版的 Windows 系统已经帮你处理了这块,按下 Tab 联想自动会加的,有时候就是用代码执行 bat 的时候需要注意这里。

2. Windows 中一些特殊单词不能作为文件名,例如 auxcom1com2prnconnul,如果你发现有软件用用户文件名作为配置文件夹名称,你可以把自己用户名改成上面那些单词,软件可能就会崩溃。

3. Windows 路径长度最多为 260 个字符。

4. Windows 创建一个没后缀名的文件需要在文件名称后面紧跟一个点,比如 .ignore. 系统会自动识别成 .ignore

5. 文件删除不掉提示被占用,可以通过资源监视器CPU关联句柄里搜索文件,然后结束进程。

6. 使用 PROGRA~1 代替 Program Files 。cmd 访问文件最快的办法是把文件用鼠标拖入 cmd 中。

7. Windows 软件闪退想找错误日志?运行里打开 eventvwr.exe

8. Windows 文件历史记录可以备份文件十分好用,Windows 自带的搜索可以设置搜索文件的内容(包括 TXT、Word、Excel 等文件内容)。

9. 按住 ctrl + shift + alt 再打开任务管理器,任务管理器会进入精简模式,便于在系统资源不足时使用任务管理器。任务管理器卡死崩溃,按 ctrl + shift + esc 可以让崩溃的任务管理器在 10 秒内重新启动。

10. 在开始菜单点关机重启时,按住 shift 键可以修改系统启动模式或进入高级恢复选项。

11. Windows 可以设置在重要操作时要求输入密码:组策略编辑器,Windows 组件,凭据用户界面—要求输入凭据的受信任路径,点击启用。系统 UAC 需要开最高。这样安装软件,修改系统重要设置都需要验证密码。

12. 电脑配置不高,你使用软件比较卡顿时,可以在任务管理器修改进程优先级。正常改为:高于正常。

13. 资源管理器中按住 Shift 键,再按鼠标右键会弹出带有“在此处打开 CMD/PowerShell 窗口”的菜单。

14. 选中文件上按住 Shift 点鼠标右键,菜单里会多出一项复制为路径。

15. Windows 下按住 alt 键双击文件夹会打开该文件夹的属性窗口。

16. 按住 Ctrl+Shift,再单击打开可执行程序,就会通过管理员模式打开。

17. 修改 hosts 文件时,可以按 Win + R 打开“运行”窗口,在输入框中输入 drivers 直接打开 C:\Windows\System32\drivers 目录,之后再自行打开 .\etc\hosts,比一层层目录点进去要省不少事。

18. Windows 系统盘下的 User 目录可以迁移到其他盘符中,具体操作可以看我之前发过的文章《改变 Windows 用户文件夹默认路径 C:/Users》。

Windows 快捷键

win + q (query) 搜索
win + w (write) 手写笔
win + e (explorer) 资源管理器
win + r (run) 运行
win + a (alert) 通知中心
win + s (search) 也是搜索
win + d (disappear) 老板键
win + f (feedback) 系统反馈
win + x 等同于右键点击开始菜单
win + c (cortana) 微软小娜
win + v 剪切板
win + h 语言输入
win + m (minimal) 最小化窗口
win + . emoji
win + ; emoji
win + i 设置
win + p (project) 投影
win + + 放大镜
win + d (desktop) 显示桌面
win + l (lock) 锁屏
win + t (taskbar) 任务栏上固定的应用
win + tab 虚拟桌面切换
win + ctrl + 左右键 切换虚拟桌面
win + shift + s 截图
ctrl + shift + Esc 任务管理器
ctrl + shift + Enter 以管理员权限启动
ctrl + l 激活地址栏,在地址栏中键入 PowerShell 即可自动打开已当前目录路径的 PowerShell
ctrl + w 关闭窗口

引用

Windows 下有哪些程序员平时不太了解,却很重要的知识?

西部计划

“到西部去、到基层去、到祖国和人民需要的地方去”

学生志愿服务西部计划口号

没错,就是这样,西部计划我来了。

也算是对自己西部计划的一种记录吧,也不一定天天都会有记录。日期是从下往上记录的,你可以在底下的评论区留言与我沟通互动。

2023年8月15日

上午九点到了,我按时来到了预定好的屋子,进来后我们同一批的三个女生早已经到了,我在旁边坐下了。等了一小会书记和副书记进来了,我们坐在会议桌前,书记和副书记人看着很好。我们稍微浅聊了一下,得知我们一行应该是五个人,但是另一个人过几天才能到,所以就先给我们四个开会了,过了几分钟其他街道办事处的书记也都来了,我们就正式开座谈会了。宣读了一下文件精神和我们各自分配的地方与任务。又听了书记的讲话和各街道书记的意见,完事以后我们就被各自街道的书记带走了。

书记领我去了办公室,跟我稍微聊了一会,聊过以后就到办公室,书记给我介绍了其他的兄弟姐妹。介绍完后就让我先行回去休息整理一下。

不得不说,这里的外卖真的很贵,得亏有外卖红包满减了一点,价格显示的才正常一点,中午点了一份麻辣烫、一份烤苕粉,味道还不赖。

下午我整点到了,到办公室后整理自己的电脑,坐着学习自己的相关专业知识,第一天没有安排什么事情,同事也只是零星的认识几个,没有认识完全。

下班了,中午看了一眼天气预报说是今天不下雨,但是出了单位门口云黑压压的,一大片一大片,自己同部门的一个男生跟我住在同一个小区同一个楼只是单元不同,很奇妙。到家了,也开始下雨了,到我现在写下这段话的时候还在下雨,完全没有要停的意思。

到家休息了一会,心想吃桶泡面,已经很久没有吃泡面了,想想可能已经有将近一年多没有吃过了,于是烧了一壶水,果然泡面还是那个味,吃完以后感觉整个胃和食道油乎乎的……

2023年8月14日

今天醒来迷迷糊糊的,洗漱完吃了点昨晚买的零食。十点多看微信有通知,原本通知今天下午两点半去进行培训,结果临时通知改成明天九点了。通知一直都很突然。好吧,反正也没事干,很老妈把沙发套拆下来洗了,这个房给配了一个很有年代感的手动双缸半自动洗衣机,就是那种左面是洗涤,右面是甩干的洗衣机。一顿忙乎就到了一点多,跟老妈出门溜达又买了一些昨天没注意到该买的小东西。买完以后我俩就去吃了个五爷拌面。吃完以后我俩就准备往回走了,路上老妈买了点松塔。我俩就回来了。老妈要做四点的大客回去,所以我们俩在家呆到了三点半就出门了,租的房子处于这个小城市的中心部位,去哪里都差不多,离客运站走路也就十五分钟的路程。到了客运站老妈买完票就上车了,我送完老妈就自己回来了。明天就要去报道了,也不知道会有怎样的情况和事情。

2023年8月13日

早上醒来,我和老妈出来吃了个早饭后就开始接着找房,找了很久还是没有找到,给昨晚拍的照片打电话,房子不是已经租出去了就是无人接听。十点多会宾馆稍微歇了一会。我跟我即将要去报道单位的姐联系,跟她询问了一下是否有相关租房或者本地的群,姐过了一会给我发过来了好几个租房信息还有本地的微信号。我和老妈又挨个打电话,终于联系到了一家。遂跟房主订好了时间,到了时间我们就过来看房了,房子很干净,该有的物品也都有,也算是还可以。我和老妈就决定租下这个房子,但我俩怕还有其他房子可以看而且当时已经十二点多了,我们俩就先出来吃个饭,吃完饭又找了找,但结果是打电话都无人接听,也没有其他房子了,我们俩就定下了这个房。下午房东带着合同和钥匙来了,我和老妈把行李也一并搬过来了,最后签完合同交完钥匙我和老妈就开始出门采购物品了。

这个地方很小,如果有精力用不了一个小时就可以全部转一遍了。我们先去办了一个宽带,宽带在营业厅刚办理完,我和老妈刚出大门电话就打过来了,小地方没有业务,来业务的时候到达的时间也是真快,我和老妈就往回赶了,花了不到半个小时就安装好了。这个宽带说是200兆,但是没买路由器,用的光猫自带的 Wi-Fi 功能,测了一下速只有50兆,后期可能还是得买一个路由器。让人调试好以后,我和老妈又出来开始采购了。

他们这里没有那种很大的商超,连一所电影院都没有,最高的楼没有超过六楼。我和老妈去采购的时候发现他们这的东西都比我们那里贵。所以偏远地区的物价也确实很贵。最后一统采购买这买那就到了晚上,我和老妈去吃盖饭。吃完以后我和老妈就取着买完的物资打车回来了。到家已经八点多了,稍微休息了一下就开始扫地、拖地、擦桌子之类的,忙乎到了九点半,终于收拾完成了。这一天走了两万六千多步,双腿都已经感觉不是自己的了。

2023年8月12日

下午六点半到服务地了,来的路上风景很美,天空很蓝,随着逐渐深入目的地,天空变得黯沉了下来,下起了大雨。到了目的地,下了大客,着急拎着自己带的行李在路旁的献血中心门口躲了半个小时的雨。

雨依旧下着,但相较半小时前已经有所收敛,选的临时宾馆离我下车的地方步行只有三分钟,遂拉着行李箱拎着行李袋就往宾馆走。进了宾馆老板看我东西太多让我从最开始订的大床房升到了标间房。

放好行李、收拾好东西后就去准备吃晚饭了。单位不给安排住宿,所以只能自己找房子,夏天,旅游城市只是一个小宾馆就已经300+了,所以只能住一晚,第二天抓紧时间找房子。老妈之前出差来这里工作过,所以领我去了这个小城市的中心地带转了一圈,说有一家烧烤他家的锅包肉很好吃,我们俩就打车去了。这里地方很小,所以打车去哪里都是六块钱。我们到了地方后,进去点了一盘锅包肉,点了一些烤串。锅包肉等了很久才上,吃起来外酥里嫩,确实不错,但是肉有点薄,而且很油。吃完饭以后出来,雨也停了。小城市有小城市的好处,下过雨以后空气很清新。我和老妈在街上溜达查看租房信息,顺便了解一下这个小城市。在我家那里已经消失的碰碰凉在这看到了两三家。还看到了蜜雪冰城、沪上阿姨(U1S1家那头的沪上阿姨都没有这家店大,这个店的面积巨大)、袁记串串香……

我们走了好多小区因为很晚了,所以先拍下了,等第二天再打。这个小城市人口流失个人感觉很多,因为这一路上找租房信息很困难,绝大部分都是出售信息。溜达了许久就回宾馆休息了。

租房笔记

该笔记同时在 GitHub 上的 rent-room-notes(点击跳转) 进行同步,如果你对此感兴趣可以在 GitHub 中提交 PR,与我一同维护。

更新时间:2023年8月11日

更新内容:

  • 调整段落;
  • 新增物品清单;

租房

地段

留意所在地的交通情况,是否靠近地铁站,上下班高峰期体验一下来回公司的交通,地铁公交站等交通设施超过 2 公里的不要考虑。
注意租的房屋附近周围有没有垃圾回收站,尽量不选。

房子

租房尽量提前自我确定并明确自己的需求。
如果可能,尽量检查以下内容:

光线

不要光线太好和太差的,不要早晚太晒的;
选好的房子最好两次看房(一次白天一次晚上),早上看光照,晚上看是否吵闹;

房屋

房间是否有霉味;
尽量不选临街房屋,最好晚上的时候感觉一下吵不吵,平时适不适合开窗户;
隔音效果如何(可以敲一敲墙壁);
房子里各个家电都试一遍是否完好;
注意角落里是否有损坏、漏水等情况;

卫生间

马桶上水、下水是否正常,水流够不够大;
热水器烧气还是用电,升温快不快,容量、安全问题;
老房子要特别注意下地漏有没有做防反味处理;

费用

签合同是看提前退租和转租;
水卡、电卡、气卡、 电梯费、垃圾费、管理费的缴费标准,物业取暖费是否是房东付;
查看水表是否是插卡式,如果是最好插卡看看电池是否还有电;

其它

如果有物品损坏,由谁来维修付款;
打开美团看一下周边外卖;

中介

一定要找正规、知名的租房中介,即使有坑,但比小中介好。
不要月付然后需要办信用之类那种房屋,宁愿季付。

房东

询问是否为二手房东。跟房东聊一下禁忌(比如不能带宠物),签约时要注意房东的身份。
如果从私人手里租房的话,不要怕麻烦,协议写的越详细越好。

室友

如果是和别人合租,条件允许的情况下可以友好的询问一下对方的职业,平时的生活作息、习惯等,如果条件不允许可以注意查看房子的公共区域是否整洁干净,从而大概判断。

物业

有一些社区、小区物业居委会那里也可以租到房子。

合同

合同一式两份,一份给租客,一份给房东。
除了条款外,双方的身份证复印件,房东的房产证复印件看一眼。
最后签名落款时也要写下身份证信息并盖手指印。
合同一定要打印出来签名盖章。退房时也要按照合约来,比如提前一个月告知房东是否续约,打扫干净房子,房东验房后及时退回押金。

签了合同再交定金!入住当天先将全屋拍照,视频留档。

物品清单

随身物品

  • 钱包
    • 身份证
    • 银行卡
    • 现金
  • 手机充电器
  • 充电宝
  • 耳机
  • 笔记本
    • 电源线
    • 鼠标
    • 耳机
    • U 盘
    • 移动硬盘

洗漱用品

  • 洗面奶
  • 洗发水
  • 电动牙刷
  • 充电线
  • 剃须刀
  • 充电器

生活用品

衣物

  • 上衣
  • 裤子
  • 内裤
  • 袜子
  • 睡衣、睡裤
  • 鞋子
  • 拖鞋
  • 衣挂
  • 衣架
  • 棉裤(冬季)
  • 羽绒服(冬季)

床上用品

  • 枕头
  • 被子
  • 被褥
  • 床单、被罩、枕套、枕巾

三餐饮食

  • 碗、盘
  • 筷子
  • 水果刀、菜刀

推荐一个正经的鼠标样式

Windows 自带的鼠标样式其实看着“中规中矩”,不说难看但是看习惯也就能用。macOS 的鼠标样式就很🉑。

之前搜索鼠标样式的时候去 GitHub 看了一下,果然还真有这么正经的鼠标样式 Apple Cursor

Open source macOS Cursors for Windows and Linux with HiDPI Support .

ful1e5/apple_cursor
68747470733a2f2f696d6775722e636f6d2f626d53306652542e706e67
68747470733a2f2f696d6775722e636f6d2f73306e71636a652e706e67

Windows 和 Linux 如何安装 README 里都有写清楚,我尝试安装并启用,效果非常不错,很“细腻”。

如果你感兴趣的话也可以下载并安装尝试一下。